diff --git a/compiler/noirc_frontend/src/ast/traits.rs b/compiler/noirc_frontend/src/ast/traits.rs index 6968ff24428..db713dd5e8d 100644 --- a/compiler/noirc_frontend/src/ast/traits.rs +++ b/compiler/noirc_frontend/src/ast/traits.rs @@ -49,6 +49,7 @@ pub enum TraitItem { }, Type { name: Ident, + bounds: Vec, }, } @@ -215,7 +216,14 @@ impl Display for TraitItem { write!(f, ";") } } - TraitItem::Type { name } => write!(f, "type {name};"), + TraitItem::Type { name, bounds } => { + if bounds.is_empty() { + write!(f, "type {name};") + } else { + let bounds = vecmap(bounds, |bound| bound.to_string()).join(" + "); + write!(f, "type {name}: {bounds};") + } + } } } } diff --git a/compiler/noirc_frontend/src/ast/visitor.rs b/compiler/noirc_frontend/src/ast/visitor.rs index 8564c99c65c..751fa2160ec 100644 --- a/compiler/noirc_frontend/src/ast/visitor.rs +++ b/compiler/noirc_frontend/src/ast/visitor.rs @@ -132,7 +132,9 @@ pub trait Visitor { true } - fn visit_trait_item_type(&mut self, _: &Ident) {} + fn visit_trait_item_type(&mut self, _: &Ident, _: &[TraitBound]) -> bool { + true + } fn visit_use_tree(&mut self, _: &UseTree) -> bool { true @@ -788,7 +790,13 @@ impl TraitItem { } } } - TraitItem::Type { name } => visitor.visit_trait_item_type(name), + TraitItem::Type { name, bounds } => { + if visitor.visit_trait_item_type(name, bounds) { + for bound in bounds { + bound.accept(visitor); + } + } + } } } } diff --git a/compiler/noirc_frontend/src/elaborator/enums.rs b/compiler/noirc_frontend/src/elaborator/enums.rs index 1ab595a9baa..2972ca61be4 100644 --- a/compiler/noirc_frontend/src/elaborator/enums.rs +++ b/compiler/noirc_frontend/src/elaborator/enums.rs @@ -250,6 +250,7 @@ impl Elaborator<'_> { location, has_body: false, trait_constraints: Vec::new(), + extra_trait_constraints: Vec::new(), type_id: Some(type_id), trait_id: None, trait_impl: None, diff --git a/compiler/noirc_frontend/src/elaborator/mod.rs b/compiler/noirc_frontend/src/elaborator/mod.rs index 57277be8ced..b3406990def 100644 --- a/compiler/noirc_frontend/src/elaborator/mod.rs +++ b/compiler/noirc_frontend/src/elaborator/mod.rs @@ -7,6 +7,7 @@ use crate::{ DataType, NamedGeneric, StructField, TypeBindings, ast::{IntegerBitSize, ItemVisibility, UnresolvedType}, graph::CrateGraph, + hir::def_collector::dc_crate::UnresolvedTrait, hir_def::traits::ResolvedTraitBound, node_interner::GlobalValue, shared::Signedness, @@ -365,10 +366,11 @@ impl<'context> Elaborator<'context> { // Must resolve types before we resolve globals. self.collect_struct_definitions(&items.structs); self.collect_enum_definitions(&items.enums); + self.collect_traits(&mut items.traits); self.define_function_metas(&mut items.functions, &mut items.impls, &mut items.trait_impls); - self.collect_traits(&mut items.traits); + self.collect_trait_methods(&mut items.traits); // Before we resolve any function symbols we must go through our impls and // re-collect the methods within into their proper module. This cannot be @@ -403,12 +405,7 @@ impl<'context> Elaborator<'context> { self.elaborate_functions(functions); } - for (trait_id, unresolved_trait) in items.traits { - self.current_trait = Some(trait_id); - self.elaborate_functions(unresolved_trait.fns_with_default_impl); - } - - self.current_trait = None; + self.elaborate_traits(items.traits); for impls in items.impls.into_values() { self.elaborate_impls(impls); @@ -489,9 +486,9 @@ impl<'context> Elaborator<'context> { self.current_trait_impl = func_meta.trait_impl; self.scopes.start_function(); - let old_item = std::mem::replace(&mut self.current_item, Some(DependencyId::Function(id))); + let old_item = self.current_item.replace(DependencyId::Function(id)); - self.trait_bounds = func_meta.trait_constraints.clone(); + self.trait_bounds = func_meta.all_trait_constraints().cloned().collect(); self.function_context.push(FunctionContext::default()); let modifiers = self.interner.function_modifiers(&id).clone(); @@ -533,7 +530,7 @@ impl<'context> Elaborator<'context> { self.add_existing_variable_to_scope(name, parameter.clone(), warn_if_unused); } - self.add_trait_constraints_to_scope(&func_meta.trait_constraints, func_meta.location); + self.add_trait_constraints_to_scope(func_meta.all_trait_constraints(), func_meta.location); let (hir_func, body_type) = match kind { FunctionKind::Builtin @@ -560,7 +557,7 @@ impl<'context> Elaborator<'context> { // when multiple impls are available. Instead we default first to choose the Field or u64 impl. self.check_and_pop_function_context(); - self.remove_trait_constraints_from_scope(&func_meta.trait_constraints); + self.remove_trait_constraints_from_scope(func_meta.all_trait_constraints()); let func_scope_tree = self.scopes.end_function(); @@ -842,7 +839,7 @@ impl<'context> Elaborator<'context> { fn desugar_trait_constraints( &mut self, where_clause: &mut [UnresolvedTraitConstraint], - ) -> Vec { + ) -> Vec<(ResolvedGeneric, Vec)> { where_clause .iter_mut() .flat_map(|constraint| { @@ -867,7 +864,7 @@ impl<'context> Elaborator<'context> { &mut self, object: &UnresolvedType, bound: &mut TraitBound, - ) -> Vec { + ) -> Vec<(ResolvedGeneric, Vec)> { let mut added_generics = Vec::new(); let trait_path = self.validate_path(bound.trait_path.clone()); @@ -881,6 +878,7 @@ impl<'context> Elaborator<'context> { if the_trait.associated_types.len() > bound.trait_generics.named_args.len() { let trait_name = the_trait.name.to_string(); + let associated_type_bounds = the_trait.associated_type_bounds.clone(); for associated_type in &the_trait.associated_types.clone() { if !bound @@ -907,8 +905,16 @@ impl<'context> Elaborator<'context> { let typ = UnresolvedTypeData::Resolved(typ).with_location(location); let ident = Ident::new(associated_type.name.as_ref().clone(), location); + let associated_type_bounds = associated_type_bounds + .get(associated_type.name.as_str()) + .cloned() + .unwrap_or_default(); + bound.trait_generics.named_args.push((ident, typ)); - added_generics.push(ResolvedGeneric { name, location, type_var }); + added_generics.push(( + ResolvedGeneric { name, location, type_var }, + associated_type_bounds, + )); } } } @@ -926,13 +932,9 @@ impl<'context> Elaborator<'context> { ) -> Option { let typ = self.resolve_type(constraint.typ.clone()); let trait_bound = self.resolve_trait_bound(&constraint.trait_bound)?; + let location = constraint.trait_bound.trait_path.location; - self.add_trait_bound_to_scope( - constraint.trait_bound.trait_path.location, - &typ, - &trait_bound, - trait_bound.trait_id, - ); + self.add_trait_bound_to_scope(location, &typ, &trait_bound, trait_bound.trait_id); Some(TraitConstraint { typ, trait_bound }) } @@ -971,6 +973,7 @@ impl<'context> Elaborator<'context> { func: &mut NoirFunction, func_id: FuncId, trait_id: Option, + extra_trait_constraints: &[(TraitConstraint, Location)], ) { let in_contract = if self.self_type.is_some() { // Without this, impl methods can accidentally be placed in contracts. @@ -1001,13 +1004,35 @@ impl<'context> Elaborator<'context> { let func_generics = vecmap(&self.generics, |generic| generic.type_var.clone()); let associated_generics = self.desugar_trait_constraints(&mut func.def.where_clause); - let mut generics = vecmap(associated_generics, |generic| generic.type_var); + + let mut generics = Vec::with_capacity(associated_generics.len()); + let mut associated_generics_trait_constraints = Vec::new(); + + for (associated_generic, bounds) in associated_generics { + for bound in bounds { + let typ = Type::TypeVariable(associated_generic.type_var.clone()); + let location = associated_generic.location; + self.add_trait_bound_to_scope(location, &typ, &bound, bound.trait_id); + associated_generics_trait_constraints + .push(TraitConstraint { typ, trait_bound: bound }); + } + + generics.push(associated_generic.type_var); + } + + for (extra_constraint, location) in extra_trait_constraints { + let bound = &extra_constraint.trait_bound; + self.add_trait_bound_to_scope(*location, &extra_constraint.typ, bound, bound.trait_id); + } // We put associated generics first, as they are implicit and implicit generics // come before explicit generics (see `Type::instantiate_with`). generics.extend(func_generics); let mut trait_constraints = self.resolve_trait_constraints(&func.def.where_clause); + let mut extra_trait_constraints = + vecmap(extra_trait_constraints, |(constraint, _)| constraint.clone()); + extra_trait_constraints.extend(associated_generics_trait_constraints); let mut parameters = Vec::new(); let mut parameter_types = Vec::new(); @@ -1080,7 +1105,9 @@ impl<'context> Elaborator<'context> { }; // Remove the traits assumed by `resolve_trait_constraints` from scope - self.remove_trait_constraints_from_scope(&trait_constraints); + self.remove_trait_constraints_from_scope( + trait_constraints.iter().chain(extra_trait_constraints.iter()), + ); let meta = FuncMeta { name: name_ident, @@ -1099,6 +1126,7 @@ impl<'context> Elaborator<'context> { return_visibility: func.def.return_visibility, has_body: !func.def.body.is_empty(), trait_constraints, + extra_trait_constraints, is_entry_point, has_inline_attribute, source_crate: self.crate_id, @@ -1229,9 +1257,9 @@ impl<'context> Elaborator<'context> { } } - fn add_trait_constraints_to_scope( + fn add_trait_constraints_to_scope<'a>( &mut self, - constraints: &[TraitConstraint], + constraints: impl Iterator, location: Location, ) { for constraint in constraints { @@ -1258,7 +1286,10 @@ impl<'context> Elaborator<'context> { } } - fn remove_trait_constraints_from_scope(&mut self, constraints: &[TraitConstraint]) { + fn remove_trait_constraints_from_scope<'a>( + &mut self, + constraints: impl Iterator, + ) { for constraint in constraints { self.interner .remove_assumed_trait_implementations_for_trait(constraint.trait_bound.trait_id); @@ -1314,6 +1345,14 @@ impl<'context> Elaborator<'context> { } } + fn elaborate_traits(&mut self, traits: BTreeMap) { + for (trait_id, unresolved_trait) in traits { + self.current_trait = Some(trait_id); + self.elaborate_functions(unresolved_trait.fns_with_default_impl); + } + self.current_trait = None; + } + fn elaborate_impls(&mut self, impls: Vec<(UnresolvedGenerics, Location, UnresolvedFunctions)>) { for (_, _, functions) in impls { self.recover_generics(|this| this.elaborate_functions(functions)); @@ -1541,7 +1580,41 @@ impl<'context> Elaborator<'context> { self.generics = trait_impl.resolved_generics.clone(); let where_clause = self.resolve_trait_constraints(&trait_impl.where_clause); - self.remove_trait_constraints_from_scope(&where_clause); + + let trait_ = self.interner.get_trait(trait_id); + + // If there are bounds on the trait's associated types, check them now + let associated_type_bounds = &trait_.associated_type_bounds; + if !associated_type_bounds.is_empty() { + let associated_type_bounds = associated_type_bounds.clone(); + let named_generics = self + .interner + .get_associated_types_for_impl(trait_impl.impl_id.unwrap()) + .to_vec(); + for named_generic in named_generics { + let Some(bounds) = associated_type_bounds.get(named_generic.name.as_str()) + else { + continue; + }; + let object_type = &named_generic.typ; + for bound in bounds { + if let Err(error) = self.interner.lookup_trait_implementation( + object_type, + bound.trait_id, + &bound.trait_generics.ordered, + &bound.trait_generics.named, + ) { + self.push_trait_constraint_error( + object_type, + error, + named_generic.name.location(), + ); + } + } + } + } + + self.remove_trait_constraints_from_scope(where_clause.iter()); self.collect_trait_impl_methods(trait_id, trait_impl, &where_clause); @@ -2091,7 +2164,7 @@ impl<'context> Elaborator<'context> { trait_impls: &mut [UnresolvedTraitImpl], ) { for function_set in functions { - self.define_function_metas_for_functions(function_set); + self.define_function_metas_for_functions(function_set, &[]); } for ((self_type, local_module), function_sets) in impls { @@ -2103,7 +2176,7 @@ impl<'context> Elaborator<'context> { function_set.self_type = Some(self_type.clone()); self.self_type = Some(self_type); - self.define_function_metas_for_functions(function_set); + self.define_function_metas_for_functions(function_set, &[]); self.self_type = None; self.generics.clear(); } @@ -2164,7 +2237,15 @@ impl<'context> Elaborator<'context> { trait_impl.resolved_generics = self.generics.clone(); let new_generics = self.desugar_trait_constraints(&mut trait_impl.where_clause); - for new_generic in new_generics { + let mut new_generics_trait_constraints = Vec::new(); + for (new_generic, bounds) in new_generics { + for bound in bounds { + let typ = Type::TypeVariable(new_generic.type_var.clone()); + let location = new_generic.location; + self.add_trait_bound_to_scope(location, &typ, &bound, bound.trait_id); + new_generics_trait_constraints + .push((TraitConstraint { typ, trait_bound: bound }, location)); + } trait_impl.resolved_generics.push(new_generic.clone()); self.generics.push(new_generic); } @@ -2196,13 +2277,20 @@ impl<'context> Elaborator<'context> { trait_impl.resolved_trait_generics = ordered_generics; self.interner.set_associated_types_for_impl(impl_id, named_generics); - self.remove_trait_constraints_from_scope(&constraints); + self.remove_trait_constraints_from_scope( + constraints + .iter() + .chain(new_generics_trait_constraints.iter().map(|(constraint, _)| constraint)), + ); let self_type = self.resolve_type(unresolved_type); self.self_type = Some(self_type.clone()); trait_impl.methods.self_type = Some(self_type); - self.define_function_metas_for_functions(&mut trait_impl.methods); + self.define_function_metas_for_functions( + &mut trait_impl.methods, + &new_generics_trait_constraints, + ); trait_impl.resolved_object_type = self.self_type.take(); trait_impl.impl_id = self.current_trait_impl.take(); @@ -2221,11 +2309,15 @@ impl<'context> Elaborator<'context> { } } - fn define_function_metas_for_functions(&mut self, function_set: &mut UnresolvedFunctions) { + fn define_function_metas_for_functions( + &mut self, + function_set: &mut UnresolvedFunctions, + extra_constraints: &[(TraitConstraint, Location)], + ) { for (local_module, id, func) in &mut function_set.functions { self.local_module = *local_module; self.recover_generics(|this| { - this.define_function_meta(func, *id, None); + this.define_function_meta(func, *id, None, extra_constraints); }); } } diff --git a/compiler/noirc_frontend/src/elaborator/patterns.rs b/compiler/noirc_frontend/src/elaborator/patterns.rs index 7f4c6b0ad21..2d01be5e22f 100644 --- a/compiler/noirc_frontend/src/elaborator/patterns.rs +++ b/compiler/noirc_frontend/src/elaborator/patterns.rs @@ -1023,7 +1023,8 @@ impl Elaborator<'_> { if let Some(definition) = self.interner.try_definition(ident.id) { if let DefinitionKind::Function(function) = definition.kind { let function = self.interner.function_meta(&function); - for mut constraint in function.trait_constraints.clone() { + for mut constraint in function.all_trait_constraints().cloned().collect::>() + { constraint.apply_bindings(&bindings); self.push_trait_constraint( diff --git a/compiler/noirc_frontend/src/elaborator/trait_impls.rs b/compiler/noirc_frontend/src/elaborator/trait_impls.rs index 26d8d546004..5c6b23fdfc0 100644 --- a/compiler/noirc_frontend/src/elaborator/trait_impls.rs +++ b/compiler/noirc_frontend/src/elaborator/trait_impls.rs @@ -62,7 +62,7 @@ impl Elaborator<'_> { let module = self.module_id(); let location = default_impl.def.location; self.interner.push_function(func_id, &default_impl.def, module, location); - self.define_function_meta(&mut default_impl_clone, func_id, None); + self.define_function_meta(&mut default_impl_clone, func_id, None, &[]); func_ids_in_trait.insert(func_id); ordered_methods.push(( method.default_impl_module_id, diff --git a/compiler/noirc_frontend/src/elaborator/traits.rs b/compiler/noirc_frontend/src/elaborator/traits.rs index fbe341fe933..2600a384774 100644 --- a/compiler/noirc_frontend/src/elaborator/traits.rs +++ b/compiler/noirc_frontend/src/elaborator/traits.rs @@ -7,7 +7,7 @@ use crate::{ NamedGeneric, ResolvedGeneric, Type, TypeBindings, ast::{ BlockExpression, FunctionDefinition, FunctionKind, FunctionReturnType, Ident, - ItemVisibility, NoirFunction, TraitItem, UnresolvedGeneric, UnresolvedGenerics, + ItemVisibility, NoirFunction, TraitBound, TraitItem, UnresolvedGeneric, UnresolvedGenerics, UnresolvedTraitConstraint, UnresolvedType, }, hir::{def_collector::dc_crate::UnresolvedTrait, type_check::TypeCheckError}, @@ -41,18 +41,32 @@ impl Elaborator<'_> { let new_generics = this.desugar_trait_constraints(&mut unresolved_trait.trait_def.where_clause); + let new_generics = vecmap(new_generics, |(generic, _bounds)| { + // TODO: use `_bounds` variable above + // See https://github.com/noir-lang/noir/issues/8601 + generic + }); this.generics.extend(new_generics); let where_clause = this.resolve_trait_constraints(&unresolved_trait.trait_def.where_clause); - this.remove_trait_constraints_from_scope(&where_clause); + this.remove_trait_constraints_from_scope(where_clause.iter()); + + let mut associated_type_bounds = rustc_hash::FxHashMap::default(); + for item in &unresolved_trait.trait_def.items { + if let TraitItem::Type { name, bounds } = &item.item { + let resolved_bounds = this.resolve_trait_bounds(bounds); + associated_type_bounds.insert(name.to_string(), resolved_bounds); + } + } // Each associated type in this trait is also an implicit generic for associated_type in &this.interner.get_trait(*trait_id).associated_types { this.generics.push(associated_type.clone()); } - let resolved_trait_bounds = this.resolve_trait_bounds(unresolved_trait); + let resolved_trait_bounds = + this.resolve_trait_bounds(&unresolved_trait.trait_def.bounds); for bound in &resolved_trait_bounds { this.interner .add_trait_dependency(DependencyId::Trait(bound.trait_id), *trait_id); @@ -62,7 +76,29 @@ impl Elaborator<'_> { trait_def.set_trait_bounds(resolved_trait_bounds); trait_def.set_where_clause(where_clause); trait_def.set_visibility(unresolved_trait.trait_def.visibility); + trait_def.set_associated_type_bounds(associated_type_bounds); + trait_def.set_all_generics(this.generics.clone()); }); + }); + } + + self.self_type = None; + self.current_trait = None; + } + + pub fn collect_trait_methods(&mut self, traits: &mut BTreeMap) { + for (trait_id, unresolved_trait) in traits { + self.local_module = unresolved_trait.module_id; + + self.recover_generics(|this| { + this.current_trait = Some(*trait_id); + + let the_trait = this.interner.get_trait(*trait_id); + let self_typevar = the_trait.self_type_typevar.clone(); + let self_type = Type::TypeVariable(self_typevar.clone()); + this.self_type = Some(self_type.clone()); + + this.generics = the_trait.all_generics.clone(); let methods = this.resolve_trait_methods(*trait_id, unresolved_trait); @@ -83,11 +119,7 @@ impl Elaborator<'_> { self.current_trait = None; } - fn resolve_trait_bounds( - &mut self, - unresolved_trait: &UnresolvedTrait, - ) -> Vec { - let bounds = &unresolved_trait.trait_def.bounds; + fn resolve_trait_bounds(&mut self, bounds: &[TraitBound]) -> Vec { bounds.iter().filter_map(|bound| self.resolve_trait_bound(bound)).collect() } @@ -236,7 +268,7 @@ impl Elaborator<'_> { def.visibility = trait_visibility; let mut function = NoirFunction { kind, def }; - self.define_function_meta(&mut function, func_id, Some(trait_id)); + self.define_function_meta(&mut function, func_id, Some(trait_id), &[]); // Here we elaborate functions without a body, mainly to check the arguments and return types. // Later on we'll elaborate functions with a body by fully type-checking them. diff --git a/compiler/noirc_frontend/src/elaborator/types.rs b/compiler/noirc_frontend/src/elaborator/types.rs index 939c20d2827..4df7df5306a 100644 --- a/compiler/noirc_frontend/src/elaborator/types.rs +++ b/compiler/noirc_frontend/src/elaborator/types.rs @@ -1862,7 +1862,7 @@ impl Elaborator<'_> { } } - for constraint in &func_meta.trait_constraints { + for constraint in func_meta.all_trait_constraints() { if *object_type == constraint.typ { if let Some(the_trait) = self.interner.try_get_trait(constraint.trait_bound.trait_id) @@ -2191,7 +2191,7 @@ impl Elaborator<'_> { } } - fn push_trait_constraint_error( + pub(super) fn push_trait_constraint_error( &mut self, object_type: &Type, error: ImplSearchErrorKind, diff --git a/compiler/noirc_frontend/src/hir/def_collector/dc_mod.rs b/compiler/noirc_frontend/src/hir/def_collector/dc_mod.rs index 13c77e2ae9c..4a2081dc423 100644 --- a/compiler/noirc_frontend/src/hir/def_collector/dc_mod.rs +++ b/compiler/noirc_frontend/src/hir/def_collector/dc_mod.rs @@ -635,7 +635,7 @@ impl ModCollector<'_> { }); } } - TraitItem::Type { name } => { + TraitItem::Type { name, bounds: _ } => { if let Err((first_def, second_def)) = self.def_collector.def_map[trait_id.0.local_id].declare_type_alias( name.clone(), diff --git a/compiler/noirc_frontend/src/hir_def/function.rs b/compiler/noirc_frontend/src/hir_def/function.rs index c3a5f603fdf..5847ccc4684 100644 --- a/compiler/noirc_frontend/src/hir_def/function.rs +++ b/compiler/noirc_frontend/src/hir_def/function.rs @@ -131,8 +131,13 @@ pub struct FuncMeta { // This flag is needed for the attribute check pass pub has_body: bool, + /// Trait constraints that were specifiied directly on this function. pub trait_constraints: Vec, + /// Trait constraints that came either from a parent item (for example a where clause on a + /// trait or trait impl) or from constraints on implicitly added named generics. + pub extra_trait_constraints: Vec, + /// The type this method belongs to, if any pub type_id: Option, @@ -222,4 +227,8 @@ impl FuncMeta { FunctionBody::Resolved => FunctionBody::Resolved, } } + + pub fn all_trait_constraints(&self) -> impl Iterator { + self.trait_constraints.iter().chain(self.extra_trait_constraints.iter()) + } } diff --git a/compiler/noirc_frontend/src/hir_def/traits.rs b/compiler/noirc_frontend/src/hir_def/traits.rs index ed39dd957cc..e2e62e33924 100644 --- a/compiler/noirc_frontend/src/hir_def/traits.rs +++ b/compiler/noirc_frontend/src/hir_def/traits.rs @@ -62,6 +62,7 @@ pub struct Trait { pub method_ids: HashMap, pub associated_types: Generics, + pub associated_type_bounds: HashMap>, pub name: Ident, pub generics: Generics, @@ -78,6 +79,8 @@ pub struct Trait { pub trait_bounds: Vec, pub where_clause: Vec, + + pub all_generics: Generics, } #[derive(Debug)] @@ -167,6 +170,17 @@ impl Trait { self.visibility = visibility; } + pub fn set_all_generics(&mut self, generics: Generics) { + self.all_generics = generics; + } + + pub fn set_associated_type_bounds( + &mut self, + associated_type_bounds: HashMap>, + ) { + self.associated_type_bounds = associated_type_bounds; + } + pub fn find_method(&self, name: &str) -> Option { for (idx, method) in self.methods.iter().enumerate() { if &method.name == name { diff --git a/compiler/noirc_frontend/src/node_interner.rs b/compiler/noirc_frontend/src/node_interner.rs index 30a3a2d1ff3..b90431400fb 100644 --- a/compiler/noirc_frontend/src/node_interner.rs +++ b/compiler/noirc_frontend/src/node_interner.rs @@ -782,8 +782,10 @@ impl NodeInterner { methods: Vec::new(), method_ids: unresolved_trait.method_ids.clone(), associated_types, + associated_type_bounds: HashMap::default(), trait_bounds: Vec::new(), where_clause: Vec::new(), + all_generics: Vec::new(), }; self.traits.insert(type_id, new_trait); diff --git a/compiler/noirc_frontend/src/parser/parser/traits.rs b/compiler/noirc_frontend/src/parser/parser/traits.rs index 1486bdff0b0..d3c7cd6a778 100644 --- a/compiler/noirc_frontend/src/parser/parser/traits.rs +++ b/compiler/noirc_frontend/src/parser/parser/traits.rs @@ -167,7 +167,7 @@ impl Parser<'_> { None } - /// TraitType = 'type' identifier ';' + /// TraitType = 'type' identifier ( ':' TraitBounds ) ';' fn parse_trait_type(&mut self) -> Option { if !self.eat_keyword(Keyword::Type) { return None; @@ -181,9 +181,11 @@ impl Parser<'_> { } }; + let bounds = if self.eat_colon() { self.parse_trait_bounds() } else { Vec::new() }; + self.eat_semicolon_or_error(); - Some(TraitItem::Type { name }) + Some(TraitItem::Type { name, bounds }) } /// TraitConstant = 'let' identifier ':' Type ( '=' Expression ) ';' @@ -479,11 +481,28 @@ mod tests { assert_eq!(noir_trait.items.len(), 1); let item = noir_trait.items.remove(0).item; - let TraitItem::Type { name } = item else { + let TraitItem::Type { name, bounds } = item else { + panic!("Expected type"); + }; + assert_eq!(name.to_string(), "Elem"); + assert!(!noir_trait.is_alias); + assert!(bounds.is_empty()); + } + + #[test] + fn parse_trait_with_type_and_bounds() { + let src = "trait Foo { type Elem: Bound; }"; + let mut noir_trait = parse_trait_no_errors(src); + assert_eq!(noir_trait.items.len(), 1); + + let item = noir_trait.items.remove(0).item; + let TraitItem::Type { name, bounds } = item else { panic!("Expected type"); }; assert_eq!(name.to_string(), "Elem"); assert!(!noir_trait.is_alias); + assert!(bounds.len() == 1); + assert_eq!(bounds[0].to_string(), "Bound"); } #[test] diff --git a/noir_stdlib/src/collections/map.nr b/noir_stdlib/src/collections/map.nr index bc0b80124db..284c8f068d9 100644 --- a/noir_stdlib/src/collections/map.nr +++ b/noir_stdlib/src/collections/map.nr @@ -1,7 +1,7 @@ use crate::cmp::Eq; use crate::collections::bounded_vec::BoundedVec; use crate::default::Default; -use crate::hash::{BuildHasher, Hash, Hasher}; +use crate::hash::{BuildHasher, Hash}; use crate::option::Option; // We use load factor alpha_max = 0.75. @@ -101,9 +101,9 @@ impl HashMap { /// assert(hashmap.is_empty()); /// ``` // docs:start:with_hasher - pub fn with_hasher(_build_hasher: B) -> Self + pub fn with_hasher(_build_hasher: B) -> Self where - B: BuildHasher, + B: BuildHasher, { // docs:end:with_hasher let _table = [Slot::default(); N]; @@ -141,11 +141,10 @@ impl HashMap { /// } /// ``` // docs:start:contains_key - pub fn contains_key(self, key: K) -> bool + pub fn contains_key(self, key: K) -> bool where K: Hash + Eq, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:contains_key self.get(key).is_some() @@ -302,11 +301,10 @@ impl HashMap { /// map.iter_mut(|k, v| (k + 1, v * 2)); /// ``` // docs:start:iter_mut - pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V)) + pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V)) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:iter_mut let mut entries = self.entries(); @@ -340,11 +338,10 @@ impl HashMap { /// map.iter_keys_mut(|k| k * 2); /// ``` // docs:start:iter_keys_mut - pub fn iter_keys_mut(&mut self, f: fn(K) -> K) + pub fn iter_keys_mut(&mut self, f: fn(K) -> K) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:iter_keys_mut let mut entries = self.entries(); @@ -470,11 +467,10 @@ impl HashMap { /// } /// ``` // docs:start:get - pub fn get(self, key: K) -> Option + pub fn get(self, key: K) -> Option where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:get let mut result = Option::none(); @@ -512,11 +508,10 @@ impl HashMap { /// assert(map.len() == 1); /// ``` // docs:start:insert - pub fn insert(&mut self, key: K, value: V) + pub fn insert(&mut self, key: K, value: V) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:insert self.assert_load_factor(); @@ -568,11 +563,10 @@ impl HashMap { /// assert(map.is_empty()); /// ``` // docs:start:remove - pub fn remove(&mut self, key: K) + pub fn remove(&mut self, key: K) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:remove let hash = self.hash(key); @@ -598,11 +592,10 @@ impl HashMap { } // Apply HashMap's hasher onto key to obtain pre-hash for probing. - fn hash(self, key: K) -> u32 + fn hash(self, key: K) -> u32 where K: Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { let mut hasher = self._build_hasher.build_hasher(); key.hash(&mut hasher); @@ -634,12 +627,11 @@ impl HashMap { // equal sets of key-value entries, // thus one is a subset of the other and vice versa. // docs:start:eq -impl Eq for HashMap +impl Eq for HashMap where K: Eq + Hash, V: Eq, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { /// Checks if two HashMaps are equal. /// @@ -686,10 +678,9 @@ where } // docs:start:default -impl Default for HashMap +impl Default for HashMap where - B: BuildHasher + Default, - H: Hasher + Default, + B: BuildHasher + Default, { /// Constructs an empty HashMap. /// diff --git a/noir_stdlib/src/collections/umap.nr b/noir_stdlib/src/collections/umap.nr index fa7fb774ce3..dc6dd17be09 100644 --- a/noir_stdlib/src/collections/umap.nr +++ b/noir_stdlib/src/collections/umap.nr @@ -1,6 +1,6 @@ use crate::cmp::Eq; use crate::default::Default; -use crate::hash::{BuildHasher, Hash, Hasher}; +use crate::hash::{BuildHasher, Hash}; use crate::option::Option; // An unconstrained hash table with open addressing and quadratic probing. @@ -73,9 +73,9 @@ impl Slot { impl UHashMap { // Creates a new instance of UHashMap with specified BuildHasher. // docs:start:with_hasher - pub fn with_hasher(_build_hasher: B) -> Self + pub fn with_hasher(_build_hasher: B) -> Self where - B: BuildHasher, + B: BuildHasher, { // docs:end:with_hasher let _table = &[Slot::default()]; @@ -83,9 +83,9 @@ impl UHashMap { Self { _table, _len, _build_hasher } } - pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self + pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self where - B: BuildHasher, + B: BuildHasher, { // docs:end:with_hasher let mut _table = &[]; @@ -106,11 +106,10 @@ impl UHashMap { // Returns true if the map contains a value for the specified key. // docs:start:contains_key - pub fn contains_key(self, key: K) -> bool + pub fn contains_key(self, key: K) -> bool where K: Hash + Eq, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:contains_key // Safety: unconstrained context @@ -196,11 +195,10 @@ impl UHashMap { // For each key-value entry applies mutator function. // docs:start:iter_mut - pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V)) + pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V)) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:iter_mut let mut entries = self.entries(); @@ -216,11 +214,10 @@ impl UHashMap { // For each key applies mutator function. // docs:start:iter_keys_mut - pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K) + pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:iter_keys_mut let mut entries = self.entries(); @@ -281,11 +278,10 @@ impl UHashMap { // Get the value by key. If it does not exist, returns none(). // docs:start:get - pub unconstrained fn get(self, key: K) -> Option + pub unconstrained fn get(self, key: K) -> Option where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:get let mut result = Option::none(); @@ -311,11 +307,10 @@ impl UHashMap { // Insert key-value entry. In case key was already present, value is overridden. // docs:start:insert - pub unconstrained fn insert(&mut self, key: K, value: V) + pub unconstrained fn insert(&mut self, key: K, value: V) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:insert self.try_resize(); @@ -346,11 +341,10 @@ impl UHashMap { } } - unconstrained fn try_resize(&mut self) + unconstrained fn try_resize(&mut self) where - B: BuildHasher, + B: BuildHasher, K: Eq + Hash, - H: Hasher, { if self.len() + 1 >= self.capacity() / 2 { let capacity = self.capacity() * 2; @@ -365,11 +359,10 @@ impl UHashMap { // Removes a key-value entry. If key is not present, UHashMap remains unchanged. // docs:start:remove - pub unconstrained fn remove(&mut self, key: K) + pub unconstrained fn remove(&mut self, key: K) where K: Eq + Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { // docs:end:remove let hash = self.hash(key); @@ -392,11 +385,10 @@ impl UHashMap { } // Apply UHashMap's hasher onto key to obtain pre-hash for probing. - fn hash(self, key: K) -> u32 + fn hash(self, key: K) -> u32 where K: Hash, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { let mut hasher = self._build_hasher.build_hasher(); key.hash(&mut hasher); @@ -416,12 +408,11 @@ impl UHashMap { // equal sets of key-value entries, // thus one is a subset of the other and vice versa. // docs:start:eq -impl Eq for UHashMap +impl Eq for UHashMap where K: Eq + Hash, V: Eq, - B: BuildHasher, - H: Hasher, + B: BuildHasher, { fn eq(self, other: UHashMap) -> bool { // docs:end:eq @@ -453,10 +444,9 @@ where } // docs:start:default -impl Default for UHashMap +impl Default for UHashMap where - B: BuildHasher + Default, - H: Hasher + Default, + B: BuildHasher + Default, { fn default() -> Self { // docs:end:default diff --git a/noir_stdlib/src/hash/mod.nr b/noir_stdlib/src/hash/mod.nr index 9d1e7bf5127..e3eaf457554 100644 --- a/noir_stdlib/src/hash/mod.nr +++ b/noir_stdlib/src/hash/mod.nr @@ -163,16 +163,15 @@ pub trait Hasher { } // BuildHasher is a factory trait, responsible for production of specific Hasher. -pub trait BuildHasher -where - H: Hasher, -{ +pub trait BuildHasher { + type H: Hasher; + fn build_hasher(self) -> H; } pub struct BuildHasherDefault; -impl BuildHasher for BuildHasherDefault +impl BuildHasher for BuildHasherDefault where H: Hasher + Default, { diff --git a/test_programs/compile_failure/associated_type_bound_error/Nargo.toml b/test_programs/compile_failure/associated_type_bound_error/Nargo.toml new file mode 100644 index 00000000000..cf843c733fa --- /dev/null +++ b/test_programs/compile_failure/associated_type_bound_error/Nargo.toml @@ -0,0 +1,7 @@ +[package] +name = "associated_type_bound_error" +type = "bin" +authors = [""] +compiler_version = ">=0.33.0" + +[dependencies] diff --git a/test_programs/compile_failure/associated_type_bound_error/src/main.nr b/test_programs/compile_failure/associated_type_bound_error/src/main.nr new file mode 100644 index 00000000000..ff57733ef68 --- /dev/null +++ b/test_programs/compile_failure/associated_type_bound_error/src/main.nr @@ -0,0 +1,13 @@ +trait Foo { + type E: Bar; +} + +trait Bar { + fn bar_method(self); +} + +impl Foo for i32 { + type E = i32; +} + +fn main() {} diff --git a/test_programs/compile_success_empty/associated_type_bounds/Nargo.toml b/test_programs/compile_success_empty/associated_type_bounds/Nargo.toml new file mode 100644 index 00000000000..111b636b5f8 --- /dev/null +++ b/test_programs/compile_success_empty/associated_type_bounds/Nargo.toml @@ -0,0 +1,6 @@ +[package] +name = "associated_type_bounds" +type = "bin" +authors = [""] + +[dependencies] diff --git a/test_programs/compile_success_empty/associated_type_bounds/src/main.nr b/test_programs/compile_success_empty/associated_type_bounds/src/main.nr new file mode 100644 index 00000000000..a1ec6802745 --- /dev/null +++ b/test_programs/compile_success_empty/associated_type_bounds/src/main.nr @@ -0,0 +1,52 @@ +trait Foo { + type E: Bar; + + fn bar(self) -> Self::E; +} + +trait Bar { + fn bar_method(self); +} + +impl Bar for i32 { + fn bar_method(self) {} +} + +impl Foo for i32 { + type E = i32; + + fn bar(self) -> Self::E { + 1 + } +} + +pub struct Baz { + t: T, +} + +trait Another { + fn foo(f: F); +} + +impl Another for i32 { + fn foo(f: F) { + f.bar().bar_method(); + } +} + +impl Baz { + pub fn baz_method(t: T) { + let bar = t.bar(); + bar.bar_method(); + } +} + +impl Eq for Baz { + fn eq(self, other: Self) -> bool { + let bar = other.t.bar(); + bar.bar_method(); + true + } +} + +fn main() {} diff --git a/tooling/lsp/src/requests/completion.rs b/tooling/lsp/src/requests/completion.rs index 838d56315ce..f6b3ecbfbdd 100644 --- a/tooling/lsp/src/requests/completion.rs +++ b/tooling/lsp/src/requests/completion.rs @@ -777,7 +777,7 @@ impl<'a> NodeFinder<'a> { }; let func_meta = self.interner.function_meta(&func_id); - for constraint in &func_meta.trait_constraints { + for constraint in func_meta.all_trait_constraints() { if *typ == constraint.typ { let trait_ = self.interner.get_trait(constraint.trait_bound.trait_id); self.complete_trait_methods( diff --git a/tooling/lsp/src/requests/document_symbol.rs b/tooling/lsp/src/requests/document_symbol.rs index 4a61471b12e..ee0e4ba7790 100644 --- a/tooling/lsp/src/requests/document_symbol.rs +++ b/tooling/lsp/src/requests/document_symbol.rs @@ -7,6 +7,7 @@ use async_lsp::lsp_types::{ }; use fm::{FileId, FileMap, PathString}; use noirc_errors::Span; +use noirc_frontend::ast::TraitBound; use noirc_frontend::{ ParsedModule, ast::{ @@ -340,8 +341,9 @@ impl Visitor for DocumentSymbolCollector<'_> { false } - fn visit_trait_item_type(&mut self, name: &Ident) { + fn visit_trait_item_type(&mut self, name: &Ident, _bounds: &[TraitBound]) -> bool { self.collect_in_type(name, None); + false } fn visit_noir_trait_impl(&mut self, noir_trait_impl: &NoirTraitImpl, span: Span) -> bool { diff --git a/tooling/lsp/src/with_file.rs b/tooling/lsp/src/with_file.rs index 64a46a501dc..78a6a111464 100644 --- a/tooling/lsp/src/with_file.rs +++ b/tooling/lsp/src/with_file.rs @@ -282,7 +282,10 @@ fn trait_item_with_file(item: TraitItem, file: FileId) -> TraitItem { typ: unresolved_type_with_file(typ, file), default_value: default_value.map(|value| expression_with_file(value, file)), }, - TraitItem::Type { name } => TraitItem::Type { name: ident_with_file(name, file) }, + TraitItem::Type { name, bounds } => TraitItem::Type { + name: ident_with_file(name, file), + bounds: trait_bounds_with_file(bounds, file), + }, } } diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index c6afa5dc3bd..1fbda3085c8 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -143,7 +143,9 @@ const TESTS_WITHOUT_STDOUT_CHECK: [&str; 0] = []; /// These tests are ignored because of existing bugs in `nargo expand`. /// As the bugs are fixed these tests should be removed from this list. /// (some are ignored on purpose for the same reason as `IGNORED_NARGO_EXPAND_EXECUTION_TESTS`) -const IGNORED_NARGO_EXPAND_COMPILE_SUCCESS_EMPTY_TESTS: [&str; 16] = [ +const IGNORED_NARGO_EXPAND_COMPILE_SUCCESS_EMPTY_TESTS: [&str; 17] = [ + // bug + "associated_type_bounds", // bug "enums", // There's no "src/main.nr" here so it's trickier to make this work diff --git a/tooling/nargo_cli/tests/snapshots/compile_failure/associated_type_bound_error/execute__tests__stderr.snap b/tooling/nargo_cli/tests/snapshots/compile_failure/associated_type_bound_error/execute__tests__stderr.snap new file mode 100644 index 00000000000..0594ef37901 --- /dev/null +++ b/tooling/nargo_cli/tests/snapshots/compile_failure/associated_type_bound_error/execute__tests__stderr.snap @@ -0,0 +1,12 @@ +--- +source: tooling/nargo_cli/tests/execute.rs +expression: stderr +--- +error: No matching impl found for `i32: Bar` + ┌─ src/main.nr:10:10 + │ +10 │ type E = i32; + │ - No impl for `i32: Bar` + │ + +Aborting due to 1 previous error diff --git a/tooling/nargo_cli/tests/snapshots/compile_success_empty/associated_type_bounds/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/compile_success_empty/associated_type_bounds/execute__tests__force_brillig_false_inliner_0.snap new file mode 100644 index 00000000000..7de940827c8 --- /dev/null +++ b/tooling/nargo_cli/tests/snapshots/compile_success_empty/associated_type_bounds/execute__tests__force_brillig_false_inliner_0.snap @@ -0,0 +1,26 @@ +--- +source: tooling/nargo_cli/tests/execute.rs +expression: artifact +--- +{ + "noir_version": "[noir_version]", + "hash": "[hash]", + "abi": { + "parameters": [], + "return_type": null, + "error_types": {} + }, + "bytecode": [ + "func 0", + "current witness index : _0", + "private parameters indices : []", + "public parameters indices : []", + "return value indices : []" + ], + "debug_symbols": "XY5BCsQwCEXv4rqLWfcqw1BsaosgJtikMITefWyYQOlK/3/6tcJCc9km1jXuML4rzMYivE0SA2aO6m49B+hyykbkFty4byU00gyjFpEBDpTShvaE2mpGc/oagHTx6oErC13d+XGBge158UBjnIX+ci0abjR/Uyf942Qx0FKMrqTGPPsH", + "file_map": {}, + "names": [ + "main" + ], + "brillig_names": [] +} diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 932610bc473..6adf8503cec 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_0.snap index 04e6d890d5d..b965fc13940 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_0.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 04e6d890d5d..b965fc13940 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 932610bc473..6adf8503cec 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_0.snap index 04e6d890d5d..b965fc13940 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_0.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 04e6d890d5d..b965fc13940 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_cow_regression/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -178,7 +178,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_0.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_0.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_0.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_0.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 77d75ec31eb..619c603eb27 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/brillig_pedersen/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 562ef3e9c38..a37bb6c1231 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -493,7 +493,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_0.snap index 562ef3e9c38..a37bb6c1231 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_0.snap @@ -493,7 +493,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 562ef3e9c38..a37bb6c1231 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -493,7 +493,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 9548702e9ce..040079916b7 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -57,7 +57,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_0.snap index b9925f447db..d29e3330bcb 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_0.snap @@ -53,7 +53,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index b9925f447db..d29e3330bcb 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hash_to_field/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -53,7 +53,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 8db3d35f4c1..9e90812a0bb 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -33693,14 +33693,14 @@ expression: artifact "unconstrained func 4", "[Const { destination: Direct(21), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(20), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(0), size_address: Direct(21), offset_address: Direct(20) }, Const { destination: Direct(2), bit_size: Field, value: 0 }, BinaryFieldOp { destination: Direct(3), op: Equals, lhs: Direct(0), rhs: Direct(2) }, JumpIf { condition: Direct(3), location: 8 }, Const { destination: Direct(1), bit_size: Field, value: 1 }, BinaryFieldOp { destination: Direct(0), op: Div, lhs: Direct(1), rhs: Direct(0) }, Stop { return_data: HeapVector { pointer: Direct(20), size: Direct(21) } }]" ], - "debug_symbols": "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kPaQ9pD2kPaQ9pD2kPaQ9tD20Oc1l+vN+Hyb11bWyls9HyJEs1W1engl1h8krD9JmLTSVtaqP010nUvXuXSdS9e5dJ1L17l0nUvXuTgfWNqj61y6zqXrXLrOpetcus6l61y6zqXrXIJPRe0R7RHtEe2R7ZHtke2R7ZHtke2RfPRqj2yPbI9qj2qPao9qj7POP4gkV51/fFq96vxU2apaPbyS/XzEk71aSSttZa2ez3ly1fmp8rkmrzo/1b6Vdp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5dp2rtoe2h7aHtoe2Bx+8+eTNR+/+7K394Vv707f2x2/tz9/aH8C1P4FrfwTX/gyu9rzm2p/CtT+G6/U53D+UtNJW1uq551GPVtmqWj33PRpHq9VKWmmrpwa161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu86161yrPao9qj2qPao9qj12e+z22O2x22O3x26P3R67PXZ77MfDjqPVaiWt9KaUXXV+fChvFa2yVbV67khtHa1WK2mlrZ7bUlveKu7r1Fa2qlZ9b9p1bsLdad+edp1b17l1nVvXuXWdW9e5dZ1b17l1nZtyC9weXefWdW5d59Z1bl3nxj02N9ncZXObPe6z24M7bW61udfmZrvr3LrOre+3rW+4re+4zbmZb4++6ba+67a+7ba+77a+8ba+87a+9ba+97a++bagY9Ae0a9534Bb34Hb9bn94zrN1UpaaaunRWPpraJVtnraNJYPr6yOVquVtHpq0LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y7zr3r3LvO/dBW1spbRatsVa3aY7XHao/VHqs9Vnus9ljtsdpjtcdqD2kPaY/r/nx/KL3p42KtvFW0ylZ108e7g+bdQvPuoXk30fyq8/WhrJXf16lrtMpW3ZbqOveuc+86965zN7pe3fbqOveuc+86965zp6tGW42+Go01OmujtdYeNNfortFe6zr3rnPvOveuc+86965zD/p37dF9Nu86965z71abd6/Nu9nm3W3zbrd599s8aRK2R7fcvHtu3k03766bd9vN+/7c+/7c+/7cq1/zohPZHtfn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D+rB703owe9N6MHvTejB+aAenA/qsUf97lG/e9TvHvW7R/3uUb+DV2vwag1ercGrkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2Hfntuvi9Cb3z228NJxe/N6GL80FdnA/q4nxQF783oYvfm9DF+aAuzgd1cT6oi9+b0Hu+/db9OUcXvzehi/NBHfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvl2vefbr2tp9xyyjvx2Hfnteue337rnkHXkt+vIb9c7v/3WPeemI79dR367jvx2Fc4HdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYVG77kt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOubbdeS365hv1zHfriO/XUd+u9757ZeWY+ieQ/6jZWgd2obuOTcd+e068tv1mm9/NHwe+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfrhrDN4Zv9Pf4dOS368hv15Hfrsr3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/vbE356/Tm+nt9Pb6Q16g96gN+iN77lz/u73nfN3nw/m2W//417+7ved83e/75y/+3wwz377H/fyd7/vnL/7fef83eeD+bvPBxN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE356/Qe+kd9I76Z30TnonvZPeSe+kd9K76F30LnoXvYve9f39nL/7fef83e875+9+3zl/9/lg/u7zwfzd54P5u993zt/9vnP+7vPB/N3ng/m7zwfzd7/vnL/7fef8XZ9Mtvt952z3+WDib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87dngVYNXDV41eNXgVYNXLegNeoPeoDfoDXqT3qQ36U16k96kN+lNepPepLf4XdW3h5xnv/3NQU7yt4ecZ7/9zZO8yN+eW5799jc3cicH+V6/+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3Z4NXDV41eNXgVYNXDV61Re+id9G76F30bno3vZveTe+md9O76d30bnrvvD37nbdnv/P27Hfeno+/PU/+9tzy8bc/eZAneZG/Pbd8/O1PbuRODvL3d2w+++1P/t4TyWe//cmLfK8j/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m/PDq86vOrwqsOrDq86vOpFb9Fb9Ba9RW/RW/QWvUVv0TvoHfQOege9g95B76B38Lsa9A5657eHnGe//c2dHORvDzn7fd85+33fOft93znPfvthbL/vO2e/7ztnv+87Z7/PBxN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbs8KrDqw6vAl4FvAp4Fff5YMZ9Pphxnw9m3Hl7xp23Z9x5e8aP3kZvo7fR2+ht9DZ6G72N3kZvo7fT2+nt33t8Gfd954z7vnPGfd85477vnHGfD2bc950z7vvOGfd954z7feeM+3wwn/32cXKSv/dE8tlvf/Ik3+sIf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72DHiFvz3xt2fAq4BXAa9i0AuvAl7FpHfSO+md9E56J72T3knvpHfSu+hd9C56F72L3kXv4ne16F30rm8POc9++5sbuZO/PeQ8++1vLvIgf3tuefbb33z5nPf7zpn3+WDib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+eCa8SXiW8SniV8CrhVXZ6O72d3k5vp7fT2+nt9Aa9QW/QG/QGvUFv0Bv0Br1Bb9J7eJUnf3tu+fjbn5zkIg/yt+eWj7/9yZfPeb/vnHmfD+az3z5ODvKd1z377U8e5Hsd4W9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfngmv8Lcn/vZMeJXwKuFVLnrhVcKrXPRueje9m95N76Z307vp3fRuepm3F/P2Yt5ezK+K+RX77VnXf5Xstyf77f/nbw85z377k+/3nbPu953z7Lcf3p799jcnucjfnlue/fY3L/Llc93vOyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O1Z8KrgVcGrglcFrwpeVdKb9Ca9SW/Sy7y9mLcX8/Zi3l7M24t5ezFvL+btxby9mLcX8/Zi3l7M24t5++Nvz5PvHPjxtz85yEku8p0DP/72Jy/y5XPd7zvns98+Tu7k7z2RfPbbn8x1BK/wtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m/Pglf42xN/ew54NeDVgFeDefuAVwNeDebtg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YN5+2DePphfDeZXg/nVYH7Ffns+++37ZHqZX5399sPbs9/+5svncb+XmuPuM+S430vNcb+XmuN+LzXH3WfIcb+XmuN+LzXH/V5qjvu91MTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz0HvBrwasCrAa8GvBrwavB8cPB8cPB8cPB8cDBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/M2wfz9sG8fTBvH8zbB/P2cb+Xmo+/vU5u5E4OcpLvc7pxv5ea434vNcf9XmqO+73UfPbbx8mN/L0nkuN+LzXH5jqCV/jbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xt+eEV/jbE397Tng14dWEV5N5+4RXE15N5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN4+mV9N5leT+dVkfsV+ez777ftkeplfzfu91Jz3e6k57/dS8+y3P/l+LzXn/V5qzvu91Dz77W++exTzfi815/1eas77vdQ8++1vvtzA35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztOeHVhFcTXk14NeHVhFeT54OT54OT54OT54OTeftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3j6Ztz/+9jz57lGs+73UXPd7qbnu91Lz8bc/+e5RrPu91Fz3e6m57vdS89lvf/L3Hl8+++1PvnsU634vNZ/99iff6wh/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vZc8Ap/e+JvzwWvFrxa8Goxb1/wasGrxbx9MW9fzNsX8/bFvH0xb1/M2xfz9sW8fTFvX8zbF/OrxfxqMb9azK/Yb89nv/38ls4+w/k9n/edn/zHyfObPO87P3mS/zh5fs/Hh/x3Ta3rQ851fci5rg851/Uh57o+5Dz77W8e5Ele5H3zove+P5hnv/3NQU7y/Xdh3fcH8+y3v3mRL6/wtyf+9lzwasGrBa8WvFrwasGrxfPBxfPBzfPBzfPBzbx9M2/fzNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/M2zfzq838ajO/2syvNvOrzfxqM7/a9/3B3Pf9wdz3/cHc9/3BfPztT777G/u+P5j7vj+Y+74/mPu+P5j42xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e254teHVhlcbXm14teHVZt6+mbdv5u2beftm3r6Zt2/m7Zt5+2bevpm3b+btm3n7Zt6+mbdv5leb+dVmfrWZX23mV5v51WZ+tZlfbeZX7Lcn++257/dx8uy3n7+ZN88H9/1eap799jd3cpDv38/7fi81z377myd5kb/rt/C3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhb69fp7fT2+nt9HZ6O72d3k5v0Bv0Br1Bb9Ab9Aa9QW98fz/X428/+X4vtR5/+5M7OchJ/jhZz377kyd5kffN9f39XM9++5O/v3Pq2W9/cpK/66jwtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wt9dv0bvoXfQuehe9i95F76J30bvp3fRueje9m95N76Z307vpvfOrand+Ve3Or4r99mrXf1Xtfi+12v1eap399jdP8reHXO1+L7XOfvubG/nbc6t2v5da7X4vtc5++5sH+V6/+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3V4NXDV41eNXgVYNXDV61oDfoTXqT3qQ36U16k96kN+lNepPeorfoLXqL3qK36K3vPZFq93up1e73Uqvd76XW429/ciN/e27V7vdSq93vpdaz3/7kQf7+jq1nv/3J33si9ey3P7mRuY7gFf72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vRq8avCqwasOrzq86vCq33l79Ttvr37n7dXvvL36nbdXv/P26j96G72N3kZvo7fR2+ht9DZ6G72N3uu/Kvbbi/326vd7qdXv91Lr7Le/eZC/PeTq933n6vd95+r3fefq93up1e/7ztXv+87V7/vO1e/zwcLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv706vOrwqsOrDq86vOrwqhe9RW/RW/QOege9g95B76B30DvoHfQOege9k95J76R30jvpnd97fNXv+87V7/vO1e/7ztXv+87V7/PB6vd95+r3fefq933nevbbn1zk8XH42W9/8veeSD377SdvriN4hb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/ewW8wt9e+Nsr4FXAq4BX0emFVwGvotPb6e30dno7vZ3eTm/QG/QGvUFv0Bv0Br1Bb9B7/VfFfnux315xv5dacb+XWme//c1F/vaQK+73Uuvst7/58jnu91Ir7vdSK+73Uuvst785yZcb+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/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zvn+fTV+yTkn55ycc3LOyTmfv6/O2Va7Z1Wcc3HOxTkX53x4dc6zOOc/XvXz/89F7+C/7+XVOPvtz//NQe+gd9A7+O875v1vMRaZ/76T/76z3f8Ws5ODnOS65z8HeZIXmf++i/+9i/+9q5ODzH/fxX/fNe5/rzXv//a1yPvm/SPz33f3+99oB5nf84Ybe5A5580573vOZ7/9nNvZb39zJwf5cuPst795kCd5ke/v6uy3v7mROznISf7+rhtnv/2c1dlvf/Mi33M+++1v/v7eGGe//c2XG2e//c1FHuRJXuTL57Pf/mbOOTjnuNw4++1v5pyDcw7O+d4Pjhacc3LOyTkn55ycc+Y927zX79lvfzPnnJxzcs71u+dZnHNdPp/99jdzzsU5F+dcnHNdPp/99icPznlwzuPy+ey3v5lzHpzz4JzH5fPZb38z5zw558k5T855xj3beTl59tvfzDlPznlyzvP+vXH22998/x08++1v5pwX57w458U5r/vv4NlvfzPnvDnnff8dPPvtb+acN+e8Oed9/x08++1v5pzv/eDo935w9Hs/OM5++znbs99+zurst7+5yIM8yffvjbPf/uR2/z06++1v7uQgJ7nI9++Ns9/+5kW+53z2289Znf32N3dykJN8/z3qd341+p1fjX7vB0fvnHNwznH/rjv77c9ZBeccnHNwzsE5x/174+y3v/n+e3T229/MOSfnnJxzcs55/647++1v5pyTc8777/7Zb38z51ycc3HOdf89Ovvtb+aci3Muzpm/r85++3O24/673/n7qvP3Vefvq87fV2e//TnPwTmP+3ddh1cdXnV4dfbbn/+bk1541eFVh1dnv/35bzEXmf++i/++6/L57Le/OchJvtw4++1vnuRF5r/v5n/v5n/v7uQg8993899337/r+oYbe5Hvv4Nnv/3NjXz/3jj77W++v+fgfvDst795khf5nvPZbz/ndvbb39zJQb7cOPvtbx7kSV7k+7sK7gfjzttH3Hn7iDtvH3Hn7ePst5+zDe4Hz377mxeZcw7OOe7fG2e//c2XG8H94NlvfzPnHJxzcM5x+Xz229/MOSfnzP3g2W9/M+ecnHNyztwPBveDUZxzcc7FORfnXPfvuuB+MIpzLs65OOfinMf9e+Pst7/58vnst7+Zcx6c8+CcuR88++3PuQ3OeXLO3A+e/fbnrCbn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X3RzP7i5H9zM2zfz9s3zwc2+6LPffs6W+8HNvH3zfHDzfHCzL7p5Pvjstz/58nnzfHDzfHDzfHDzfHBzP7h5Prjv88H5u88H5+/eD87ffT44f/f54Pzd54Pzd+8H5+/eD87ffT44f/f54Pzd54Pzd+8H5+/eD87fvR+cz357nvxxcv7u88H5u88H5+/eD87fvR+cv/t8cD777U/+/h2cv/t8cP7u88H5u/eD83fvB+fv3g/O330+OH/3+eD8dc45OOf7fHD+gnMOzjk45+Cc7/PB+QvOOTjn4JyTc07OOfs92/t8cP6Sc07OOTnn5Jzv88H57LeffJ8Pzl9xzsU5F+dcnHNxzvf54PwV51ycc3HO9/ng/A3OeXDOg3MenPN9Pjh/g3MenPPgnAfnPDnn2e7Z3ueD8zc558k5T855cs73+eB89tufvO/5LM55cc6Lc16c8+KcV91zW5zz4pwX53z3r+az3/5kznlzzptzvvtX87c55805b855c87376t59tvP2ba7fzXb/ftqtvv31Wz376vZ7t9X89lvnydP8vd33Tz77Xn+vz/z9ic3cif/6604OclFHuRJ/tdb/eR98x+v6vzv/ePVmzs5yEku8iBP8iLvm4PeoDfoDXqD3qA36A16g96gN+lNepPepDfpTXqT3qQ36U16i96it+gteoveorfoLXqL3qJ30DvoHfQOege9g95B76B30PvHqzq/8z9evfmv9/zm/3j15iAn+a/3/Ob/ePXmSV7kffPiOlpcR4vr6OyLPjnJRR7kSV5krt9N76Z307vp3fRueje9m95N7769Z7/9zY3cyUFOcpEHeZIXmV541eFVh1dnv/3N9DZ6G72N3kbv4dXfvxFnv/3Nf7+rdnInBznJRb6cPPvtb17kffPh1ZPbx8+z3/7mv946OclFvtdRh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eHV2W9/8qR30jvpnfROeie9k95J76R30rvoXfQuehe9i9/VH68OY89++5sneZH3x9iz3/7mRu7kv95zDf7x6s1FHuRJ5vqFVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbw6++1P7vR2eju9nd5Ob6e309vp7fR2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quBVMW8v5u3FvL2Ytxfz9mLeXszbi3l7MW8v5u3FvL2YXxXzq2J+VcyvivnV428/v6U/Xq1zLfzx6s3/etf5nf/x6s1J/te7zu/2+mRaXZ9Mq+uTaXX9DK2un6HV9TO0un6GVtfP0Or6GVpdP0OrRe+id9G76N30bno3vZveTe+md9O76d303ved27jvO7dx33du477v3MZ937mN+75zG/d95zbu+85t3Ped27jvO7fxo7fR2+ht33u47dlvf3KSizzI33u47dlvf/K++ey3P/mvd5387Zk39tsb++2N/fbGfntjv72x397Yb2/stzf22xv77Y399sZ+e2O/vbHf3thvb+y3txH0Jr1Jb9Kb9Ca9SW/Sm/QmvUlv0Vv0Fr1Fb9Fb9Ba9RW/RW/QOege9g95B76B30DvoHfQOege9k977/mA7++1/7221s9/+5r/3CPLkIg/yJP+9F3OukT9ePfmPV29u5E7m+oVXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1Wz0NnobvY3eRm+jt9Hb6O30dnoPr8bJQb6cfPztTx7kSV7ky8nH3/7kRu7kIOfH0sff/uTxXQtnv/3Ni3yvowmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8Or62/9leie9k95J76R30jvpnfQuehe9i95F76J30bvoXfyurk+mnf32J5/3B5/cyP1j7Nlvf3OSi/z3ez7X4PXJtLPf/ubL57Pf/uZ7/S54teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXq1Ob6e309vp7fR2eju9nd6gN+gNeoPeoDfoDXqD3qA36D28Gie3j6Xr+mTa429/cpKLPD6WruuTaY+//cmXz4+//cn379jH3/7k+K6Ls9/+5iLf62jBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvrr/9X6Z30bvp3fRueje9m95N76Z307vpve87t+tv/5cbuZODfH9X19/+Lw/y/Hh79tvffPl89tvf3D7env32Nwc5yX+/537yIE/yIl8+b3i14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxte7aQ36U16k96kN+lNepPepDfpLXqL3qK36C16i96it+gteg+v/pi8r0+m7euTaY+//clBTnJ9jN3XJ9Mef/uTF/ny+fG3r5Mbud/rZQaZ6whebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGV/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv72e//e+31PG3d/zt/Xd9Mv3st795kffN1yfTz377mzs5yH+/535ykQd5khf540b/XV713+VV/11e9d/lVf9dXvXf5VX/XV713+VV/11e9V/SW/QWvUVv0Vv0Fr1Fb9Fb9Ba9g95B76B30DvoHfQOege9g95B76R30jvpnfROeie9k95J7+HVOHm/jO2/65Ppv+97E/9yJwc5X8b23/XJ9N/3vYl/eZIXeb8c7o+//cnfvK6f/fY3cx1trqPNdbS5fjfX7+b6hVcNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eAV/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+9nv/38lvC3d/zt/ey3H96e/fY3T/Ii74+3Z7/9zY3cyX+/535ykos8yJN8udHgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV61Se+kd9G76F30LnoXvYveRe+id9G76N30bno3vZveTe+md9N7eDVO/ubA/fG3/+V+vzfR+/3eRO/3exP98bfvk5Nc5EGe5PVx+PG3n3zuB38nN3In3+uow6sOrzq86vCqw6sOrzq86vCqw6sOrzq86vCqw6sOrzq86vCqw6sOrzq86vAKf3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt/ez3/78lga9g94/Xh3env32Nw/yJK+Pt2e//cn3exO93+9N9LPffhh79tvfnOQiD/LlRodXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNU3vZve+3yw42/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv70//vZx8vecrj/+9idfPsf93kSP+72J/vjb98lBTnKRB3l+HH787U/e3/Vy9tvf3Mj3Ogp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwCv87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3s9++/NbWvQuete3R9HPfvubizzI3x5FP/vtb758jvu9iX722w9jz377m4Oc5CLDDXgV8CrgVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VU2ehu9jd5Gb6e309vp7fR2eju9nd5Ob6e30xv0Br1Bb9Ab9B5ejZO/PYr++NufvMiXz3m/N9Eff/s+uZODnOQij4/Dj7/9yd8eRT/77U++35voCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAKf3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt/ez335+S2e//c+R289++5v/ODlPDnKS/zi5Tv726ntdn0yv65Ppdf0Mva6fodf1M/S6foZe18/Q6/oZel0/Q69Gb6O30dvo7fR2eju9nd5Ob6e309vp7fR2eoPeoDfoDXqD3qA36A16g96gN+lNes9+ezs5yEku8iD/7XvHyYu8bz777U/+2zPvJ3975p399s5+e2e/vbPf3tlv7+y3d/bbO/vt/+dGpnfQO+gd9A56B72D3kHvpHfSO+md9E56J72T3knvpHfSu+hd9C56F72L3kXvonfRu+hd9G56N72b3k3vpnfTu+nd9G567/vOfdz3nfu47w/2s9/+995WP/vtb/7rXScXeZAn+a93nLxvPu/jPLmRO/levwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVyPpTXqT3qQ36U16k96kt+gteg+vficH+XLy7Le/eZAneZEvJ89++5sbuZODnB9Lz377m8e9Fg6vnrzIXEfwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasAr/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O398bfXyetj7ONvP/m8P/jkRu4fYx9/+5OTXOS/3nHyJC/y5fPjb3/yvX4nvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa9m0Vv0Fr1Fb9Fb9Ba9Re+gd9A76B30DnoHvYPeQe+gd9B7ePU7uX0sndcn089++5uTXOTxsXRen0w/++1vvnw+++1vvn/Hnv32N8e9Lg6vnlxkriN4NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14teDVglcLXi14teDVglcLXi14teAV/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vb++NvrZHqD3uuT6Y+//cmXz4+//cnt4+3jb39ykJP81ztOHuRJXuTL5wWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqzXpnfROeie9k95J76R30jvpnfQuehe9i95F76J30bvoXfQueg+v/pi8rk+mr+uT6We//c1BTnJ9jF3XJ9PPfvubF/ny+ey3Hw6f/fY39+96Ofvtb07yvY42vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa/wt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e3/87ee3xPwKf3vf1yfTH3/7kxf58nlfn0x//O1P7uQg//WOk4s8yJO8yJcbG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1V70bno3vZveTe+md9O76d30bnqvTybwtwf+9sDfHvjbA3974G8P/O2Bvz3Ofvsfk+N3fTLxuz6Z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epPepDfpTXqT3qS36C16i96it+gteoveorfoLXoPr8bJ7WNpXZ9MPf72Jye5yONjaV2fTD3+9idfPj/+9iffv2Mff/uT414Xxy/65CJzHcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KniFv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73Ofvv5LeFvL/ztNa5Pps5++5svn89++5vbx9uz3/7mICf57/fcTx7kSV7ky+cBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsx6B30DnoHvYPeQe+gd9A76B30TnonvZPeSe+kd9I76Z30TnoPr/6YPK5Ppsb1ydTjb39ykJNcH2PH9cnU429/8iJfPj/+9nVyI/d7vewgcx3BqwGvBrwa8GrAqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCK/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LfX2W8/vyX87YW/veb1ydTZb3/zIl8+z+uTqbPf/uZODvLf77mfXORBnuRFvtyY8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmv5qR30bvoXfQuehe9i95F76J30bvo3fRueje9m95N76aXeTv+9nr87ePk/TF2XZ9Mrfu9iVr3exO17vcmal2fTK3rk6l1vzdR635votb93kQ9/vY/Dj/+9iffed3Zb39zkO91tODVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14hb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vY6++3Pb4n5Ff72Ovvth7dnv/3Nk7zI++Pt2W9/cyN38t/vuZ+c5CIP8iRfbix4teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVgleL54P42wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fv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M+fBT9/+ru0sb3z69pcX67xY58U6r/LGwlcLX61V+5y1Frxh1nk/cIMDZp13hwc8YdZ5s86bz/N54Aazzjy/un37y/y8h3U+fJ7Phuv6fvr277X49O3ftf307T9OuMMDrn3Ofha8mcXcVvuc3RoccO1zduvwgCdc+5zbt79cvtr46vbtd51v3/5ywh0ecK3zpmfY9AybnmHjq42vNr7a+OrTt7/XJVnnnPCCN1z30e61z9m9wczl+dXutc/Z+Gr3CZevNr7a+GqPBy5fbXy18dXt219mnfHVxlcbX92+/cv4auOrja82vtr4auOrja8258E96/fCxlcbX218tfHVXtxHq/Y5ew2YuTxv3/hqrzov7M19hK82vtqb+2hzH+Grja9u3/4y9xG+2vhq46vbt7/MfYSvNr7a+Grjq42vNr46PL86nAfPU38PPfjq4KuDr84z4QXX843z1Hnh8PfBw98HD746LeEOl68OvjptwRsuXx18ddhfHfZXB18dfHXw1WF/ddhfHXx18NXBVwdfHXx18NVhf3XYX52sv4cefHXw1cFXh/3VYX91ej3fOD1h5vL3wYOvTl/whstXB1+d0eCAy1cHX92+/eUJs8746uCr27e/3GDWGV8dfHXw1cFXB18dnl8dzoNn1e/9g68Ovjr46izuI563n1W/989aMHP5++C5vvpygwPO39ntcB789O3fs9inb//xgjdcf6f79O3fc9mnb/9xwAlXp3r79pfn74x27nnwyxv+/Lx/63Nu3/7y71x2bt/+csIdHvCEF7zhU1znwfM05rafN87t21/u8IB/3ji3b395w6c4HrjBAf8+z+epnuE81TOcp/ZX56n91XnKV+cpX52nfHWe/D33Pk/+Ps/n07f/uMMDnjBz8+eN8+TPG+fpD9zggFnnzjp31rlPmHXurHNnnQfrPFjnen51bt/+Mus8WOfBOg9+3sE6D9Z5PrW2s9VaTdZ5ss6TdZ6s8/x54zyTuZO589SarwduMOu8Eu7wgFnnteANn+LNOm/WefN53gl3mHXerPPm5938vJt1Pnyeq786z+H6nqxrcVjnwzofPs9nwRv+7XNOex645rZ63n7a89vnnPZ0eMC/fc5pz4I3XPfRt2/flxsccMK1zt++/csTXvCGa53p2w99+6FvP/Tth7790Lcf+vbT4vd847SodW5xivOBGxxw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wdzB3MHcydzJ3MncydzJ3MncydzJ3MncydzF3MXcxVx8NfDVwFcDX3379i9/5q7LpxhfDXz17du/nHCHP5+rcXnCCy5fDXw18NXAV+MEnHCHB8z9i68Gvhr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria9u3/4yc4O5wdxkbjI3mZvMTeZeX+XlCS94w+XJT9/+4wYHXJ68729/ecATXnDdvxNfTXw18dXEVxNfTXw18dXEVxNfTXw18dXEVxNfTXw18dXEVxNfTXw18dXEVxNfTXw18dXEVxNfTXw18dXEVxNf3fe3v8zczdzN3M3czdzN3M3czdzN3M3cXZ68ffv13u3bXw444Q6XJ+/7219ecHnyvr/98n1/+8sNDjjhDg+47t+Frxa+Wvhq4auFrxa+Wvhq4auFrxa+Wvhq4auFrxa+Wvhq4auFrxa+Wvhq4auFrxa+Wvhq4auFrxa+Wvhq4auVzE3mJnOTucncztzO3M7cztzO3M7cXp68ffvLGz7Fozx5+/aXA064PPnp23884QVvuO7fha8Wvlr4auGrha8Wvlr4auGrha8Wvlr4auGrha8Wvlr4auGrha8Wvlr4auGrha8Wvlr4auGrha8Wvlr4auGrha/WZu5h7mHuYe5h7mHuYe5h7mHuYe6puff97deZ9/3t14H3/e0vJ9zhAZcn7/vbX95wefK+v/3lBgeccIcHPOG6fze+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNr+77219mbmduZ+5g7mDuYO5g7mDuYO5g7ihP7rHh8uTt218uT96+/eWEO1yevH37ywve8CnGVxtfbXy18dXGVxtfbXy18dXGVxtfbXy18dXGVxtfbXy18dXGVxtfbXy18dXGVxtfbXy18dXGVxtfbXy18dXGVxtfneeBGxxwwh0e8IQXvGHmNube/73Udbk8efv2lzs84AmXJ2/f/vIpjvLk7dtfDjjhDg94wguu+/fgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+OoM5g7mDuZO5k7mTuZO5k7mTuZO5k7mzvLkmeXJ+/72lxtcnrx9+8sdHnB58vbtL2+4PHnf3/4y9y++Ovjq4KuDrw6+Ovjq4KuDrw6+Ovjq4KuDrw6+Ovjq4KuDrw6+OuWr9pSv2lO+ak/5qj3lq/aUr9pTvmpP+ao95av2lK/a8zC3MbcxtzG3MbcxtzG3MbcxtzG3MTeYG8z9+OrjzPbp268D26dv//GAJ7zgnyfbE6f4+urLP0+2+/72lxPu8IAnvOAN/+7f9pSv2lO+ak/5qj3lq/aUr9pTvmpP+ao95av2lK/a05k7mDuYO5g7mDuYO5g7mDuYO5g7mDuZO5k7mTuZO5k7mTuZO5k7mTuZu5i7mLuYu5i7mLuYu5i7mLuYu36ebLdvf7nBAf882W7f/vKAJ/zzZLt9+8un+Dxwg7l/D/fv4f493L+H+/dw/x7uX3zV8FXDVw1fNXzV8FXDVw1fNXzV8FXDVw1fNXzV8FXDVw1fNXzV8FXDVw1fNXzV8FXDV7dvf5m5wdxgbjA3mBvMDeYmc5O5ydyPr64z7/vbrwM/ffuPJ7zgDZcn7/vbX25wefL27S93eMATXvCGTzG+aviq4auGrxq+aviq4auGrxq+aviq4auGrxq+aviq4auGrxq+aviq4auGrxq+aviq4auGrxq+aviq4auGrxq+aou5m7mbuZu5m7mbuZu5m7mbuZu5m7mnPNlOgwNOuDx539/+8oQXXJ6872+/fN/f/nKDA677N/BV4KvAV4GvAl8Fvgp8Ffgq8FXgq8BXga8CXwW+CnwV+CrwVeCrwFeBrwJfBb4KfBX4KvBV4KvAV4GvAl/dvv1l5iZzk7nJ3GRuMrcztzO3M7cz9/YM63J58vbtLy94w6d4lCdjNDjg8mSMDg94wgvecHky5gPX/Rv4KvBV4KvAV4GvAl8Fvgp8Ffgq8FXgq8BXga8CXwW+CnwV+CrwVeCrwFeBrwJfBb4KfBX4KvBV4KvAV/f97S8z9zD3MPcw9zD3MPcw9zC3eoZ2+/bYlxsccMJ/czMuD/hvbublBW/4FH989XKDA064wwNmbmNuY25jbjA3mBvMDeYGc4O5wdxgbjA3mJvMTeYmc5O5ydxkbjI3mZvMTeZ25nbmduZ25nbmduZ25n58lfPyZ+79bHx89eWPr15ucMDM/fiqP5f/5vb7+fz46uUFb/hvbr+fw4+vXm5wwFmf28nnefJ5/vjq5QWzzpN1XqzzYp0X67z4eRfrvFjnj6++a/vx1XetFuu8WOfNOm/W+eOrPJeZu5n78dV3zT++ennBrPPHV1/++OrlBrPOH1+93OEBs86Hdf746uXz4/v+9pdrnW/f/nLCHR7whBe84fO7Fr3VOt++/eWAE+7w+F2L27e/zFx89enbv+t/39/+coPjt+b3/e0vd3jA87fm9/3tL2+47qP7/vbvOl9ffTnghDvMOuOrjq86vur4quOrjq86vurXV/e6dNb5+urLE17whk9di+urLzN3MPfjq+/646vbt79cvur4quOr+/72L+Orjq86vvr07T9mnfFVx1cdX933t7/MOuOrjq86vur4quOrjq9u3/5y/V7o+Krjq46vOr66ffvLWdfi+urLzN3MxVe3b3+Z+whfdXx1+/aXuY/wVcdXt29/mfsIX3V8NfDV7dtfDrjWeeCrga8Gvhr4auCrwf5qsL+6ffu9LgNfDXw18NXt21+e8Ppdi9u3v8xc9lcDX92+/eWEy1cDX92+/eUFl68Gvrp9+8sNZp3x1cBXt29/ecKsM74a+Grgq4GvBr4a7K8G+6vbt3+vC74a+Grgq8H+arC/un3791qMgJk7mIuvbt/+8oLLVwNf3b795QaXrwa+un37ywNmnfHVwFe3b//y4j7CVwNfDXw18NXAVwNf3b79Za7vqt/7A18NfDXw1e3bX+Y+2vV7//btLzN3M/f66vPc4PbtLzf4s873nz/lydu39/vf+frqyxNe8Of6jsvnx7dvf7nBn7nrcsJ1H03OgxNfTXw18dXEVxNfTc6Dk/Pg5Dw4r6/m5fLVxFe3b395w3UfTXw18dVkfzXZX018NfHVZH812V9NfDXx1WR/NdlfTXw18dXEV5P91WR/NfHVxFcTX018NfHVxFeT/dVkfzXZX018NfHVxFeT/dXt27//fvZXt2//rjn7q8n+anIenOyvJvuria8m58HJ/mqyv5r4anIenOyvJvuria8mvpqcByf7q8n+auKria8mvpr4auKryXlwch6c7K8m+6uJrya+mpwHJ/uryXlwsr+anAcn+6vJ/mpyHpzsryb7q8n+anIenOyvJvuryf5qch6c7K8m+6vF/mqxv1qcBxf7q8X+arG/Wvhq4auFrxa+un37vS6L8+Bif7XYXy32VwtfLc6Di/3V4jy42F8tzoMLXy32VwtfLXy18NVif7Xw1cJXC18t9lcLXy18tfDVwleL/dXCVwtfLXy18NXCVwtfLXy12F/dvv17XfDVwlcLXy18tdhfLc6Di/3V4jy42F8tfLXYXy32VwtfLXy12F8t9lcLXy18tdhfLfZXC18tfLXw1WJ/tdhfLXy18NXCVwtfLXy18NVif7XYX92+/Xtd8NXCVwtfLfZXi/3V4jy42F8tzoOL/dXCV4vz4O3bXy5fLXy1OA/evv3l8tXCV4vz4O3bX6513vhq46vNefD27S/XOm98tfHVxlcbX218tdlfbfZXt2+/12Xjq42vNr7a7K82+6vNefD27V9mf7V53r7x1eY8ePv2l8tXG19tzoO3b3+5fLXx1eY8ePv2l1lnfLXx1eY8ePv2l1lnfLXx1cZXG19tfLU5D26et9++/Xtd8NXGVxtfbc6Dm+ftm/Pg7dtfZu5g7vVVv7zgDX/W+f7zszx5+/Z7vrh9+8sJd/hzfcflCS94w5+5n3PH7dtf5j5a3Ef4auOrja82vtr4anMevH37lzfXd9dzlY2vNr7anAdv3/4y9xG+2vhqs7/a7K82vtr4arO/2uyvNr7a+Gqzv9rsrza+Ovjq4KvD/uqwvzr46uCrg68Ovjr46uCrw/7qsL867K8Ovjr46uCrw/7q8Lz9sL86PG8/7K8O+6vDefCwvzrsrw6+OpwHD/urw/7q4KvDefCwvzrsrw6+OvjqcB487K8O+6uDrw6+Ovjq4KuDrw7nwcN58LC/OuyvDr46+OpwHjzsrw7nwcP+6nAePOyvDvurw3nwsL867K8O+6vDefCwvzrsrw77q8N58LC/OuyvDvurw/7qcB487K8O+6vD/urgq4OvDr46+OrwvP1wHjzsrw77q8P+6uCrw3nwsL86nAcP+6vDefDgq8P+6uCrg68Ovjrsrw6+Ovjq4KvD/urgq1O+iqd8FU/5Kp7aX8VTvoqnfBVP+Sqe8lU85at4ylfxlK/iqf1VPPW8PZ7yVTzlq3jKV/GUr+Kp/VU8dR6Mp/ZX8TTmBnPLV/HU/iqe2l/FU76Kp3wVT+2v4qn9VTzlq3jKV/HU/iqe2l/Fk6xz+Sqe8lU8tb+Kp/ZX8STrnKxz8vN2ft7yVTzlq3g617dzfet5ezyddS5fxVO+iqf2V/HU/iqeOg/GU/ureAZzB3PLV/HUeTCeet4eT/kqnvJVPHUejKeet8dTvoqnfBVPnQfjqeft8UzWuXwVT/kqnsl9tLiPFuu8WOfFz7v4eRf30eI+WlzfxfWt5+3xbNa5fBXP5j7a3Eeb+6jOg/HU8/Z4NnM3c8tX8dR5MG7f/nLUmpev4jncR4f7qHwVT/kqnsN9dOo+aviq4auGr1qdB6PV8/Zo+Krhq4avGr5q+Krhq1bnwWj1vD1u336vS8NXDV81fNXqPBitnrdHq/Ng3L79ZeYGc6+v+uUOD/izzt9/fvHv/Kzz/e98fXX5+urLDf5c33E54Q4P+DN3XV5w3Ue3b/8yvmr4quGrhq8avmqd69u5vp3r23ddI3zV8FWr82C06q/i9u0vMxdftdpfRav9VTR81fBVq/1VtNpfRcNXDV+1yee59lfR8FXDVw1ftcnnebHO+Krhq4avGr5q+Krhq1b7q2iLz/NinfFVw1cNX7XaX0XbzN3Mreft0Wp/Fa32V9E261z7q2i1v4qGr9phnWt/Fa32V9HwVTus82Gd2V8Fvgp8FXUejGB/FeyvAl8Fvgp8Ffgq8FXUeTCizoMR7K+C/VXgq8BXUefBCPZX0ZjL/irqPBjB/irYX0WdByPYXwX7q2B/FXUejGB/Feyvgv1VJOvM/irYXwX7q2B/Fck6s78K9lfB/irwVeCrwFeBr6Ket0d01pn9VbC/CvZXga+izoMR7K9iMJf9VdR5MAJfBfurwFeBrwJfBfurwFeBrwJfBfurwFeBrwJfBb4K9leBrwJfBb4KfBX4KvBV4KtgfxX1vD0CXwW+CnwV+CrYX0WdByPYX8VmLvurwFfB/irYXwW+CnwV7K+C/VXgq8BXwf4q2F8Fvkp8lfgq2V8l+6vEV4mv6NuDvj3o24O+Pejbg749sp63R+KrxFeJr5L9VbK/Ss6Dyf6Kvj3o2yPxVXIezHreHomvEl8l58Gs5+2R+CrxVXIezHreHomvEl8lvkrOg1nP24O+Pejbg7496NuDvj3o24O+PejbI+t5eyS+om8P+vagbw/69kjOg1nP2yPZX+VgLr5KzoPfvv3L5avEV8l58Nu3f7l8lfgqOQ/evv1l1hlfJb5KzoO5uI/wFX170LcHfXskvkp8lZwHc3F9d/3ep2+PxFeJr5LzYG7uI86Dt29/mbmbudVfRVZ/Fd++/cufdf7+8+XJrP4qsvqryOqv4vbtL//6q+jVX0Wv/ipu3/7yr7+K27e/XPfRt2//cq0zfXt0fNXxVcdXnfNgr/4qen0fJ759+7xcvur4qnMe7NVfxe3bX2YuvqJvD/r2oG+Pjq/o24O+Pejbo+Mr+vagbw/69qBvj46v6NuDvj3o24O+Pejbg7496Nuj46vO/oq+Pejbg7496Nuj4yv69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69hj4anAeHDxvH/hq4KvBeXDwvH3gq4GvBufBwfP2ia8mvpr4anIepG+Pia/o24O+Pejbg7496NuDvj3o22PyvH3iK/r2oG8P+vagb4/JeXDyvH2yv5o8b5/4anIe/PbtXy5fTXw1OQ9++/bL+Griq8l5cGbCrDO+mvhqch6cPG+nbw/69qBvD/r2mPhq4qvJeXDyvH3W952Dvj0mvpr4anIenDxvn5wHb9/+MnMHc6u/iln9VXz79svXV/efn+XJWf1VzOqvYlZ/Fbdvf/nXX8Ws/ipm9Vdx+/YvV38Vt29/mftocR/hK/r2mPhq4quJrybnwbm5vpvru+u5ysRXE19NzoNzcx9t7iN8NfEVfXvQtwd9e0x8Rd8e9O1B3x4TX9G3B3170LcHfXssfEXfHvTtQd8e9O1B3x707UHfHgtfLfZX9O1B3x707UHfHgtf0bcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LfHxleb8+DmefvGVxtfbc6Dm+ftG19tfLU5D26et298tfHVxleb8yB9e2x8Rd8e9O1B3x707UHfHvTtQd8em+ftG1/Rtwd9e9C3B317bM6Dm+ftm/3V5nn7xleb8+C3b/9y+Wrjq8158Nu3f7l8tfHV5jx4+/aXa50Pvjr46nAePDxvp28P+vagbw/69jj46uCrw3nw8Lz91Pedg749Dr46+OpwHjw8bz+cB2/f/jJzg7n0V4f+6tu3f/mzzt9/fvPvrP7q0F8d+qvbt79c/dWhvzr0V7dvf7n6q9u3v1z30bdv/zLrjK8Ovjr46uCrw3nw0F99+/Yv13OVg68OvjqcBw/91e3bX2YuvqJvD/r2oG+Pg6/o24O+Pejb4+Ar+vagbw/69qBvj4Ov6NuDvj3o24O+Pejbg7496Nvj4KvD/oq+Pejbg7496Nvj4Cv69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69mz4qtV5MFs9b8+Grxq+anUezFbP27Phq4avWp0Hs9Xz9mz4quGrhq9anQeTvj0bvqJvT/r2pG9P+vakb0/69qRvz1bP27PhK/r2pG9P+vakb89W58Fs9bw922DuYC6+anUezG/ffhlfNXzV6jyY3779y+Wrhq9anQfz9u0vs874quGrtriPFvcRvqJvT/r2pG/Phq8avmqL67u5vvV956Rvz4avGr5qm/tocx/VeTBv3/4ycw9zq7/KVv1Vfvv2L3/W+fvPlydb9VfZqr/KVv1V3r79clR/lVH9VUb1V3n79pd//VXevv3luo++ffuXa53p2zPwVeCrwFdR58GM6q8y6n3I+e3b78+CrwJfRZ0HM6q/ytu3v8xcfEXfnvTtSd+ega/o25O+PenbM/AVfXvStyd9e9K3Z+Ar+vakb0/69qRvT/r2pG9P+vYMfBXsr+jbk7496duTvj0DX9G3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3Z+Kr5DyYh/sIXyW+Ss6DebiP8FXiq+Q82Ot5e3Z81fFVx1ed8yB9e/L+9qRvT/r2pG9P+vakb0/69qRvz17P27PjK/r2pG9P+vakb8/OebDX8/bs7K96MBdfdc6D3779y+Wrjq8658Fv3/7l8lXHV53z4O3bX2ad8VXHV53zYK/n7UnfnvTtSd+e9O3Z8VXHV53zYO9c3/q+c9K3Z8dXHV91zoO9nrdn5zx4+/aXmTuYW/1V9uqv8tu3f/mzzvefn+XJXv1V9uqvsld/lbdvf/nXX2Wv/ip79Vd5+/aX/+bGuvyPuesZ//bv/un//U//+s//6T//y3/9f/7p//j///H//l//67/9l//5z//9v33/3//5//2P9z/5z//6z//yL//8f//H//Gv//2//Nf/83/963/9j//y3//L33/2T8/f//nHf/l//48fcPT/8O/+6e8u+vf/OM//u3+cy//Dv/3bv/2Hf/vf", + "debug_symbols": "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XLrOZbXHao/VHqs9pD2kPaQ9pD2kPaQ9pD2kPaQ9pD20PfT5ncv1x/j8M6+trJW3em4iRLNVtXp4JdY3EtZ3EiattJW16ruJrnPpOpeuc+k6l65z6TqXrnPpOhfnhqU9us6l61y6zqXrXLrOpetcus6l61y6ziW4K2qPaI9oj2iPbI9sj2yPbI9sj2yP5NarPbI9sj2qPao9qj2qPc46/yCSXHX+cbd61fmpslW1engl+7nFk71aSSttZa2e+zy56vxU+VyTV52fat9Ku86161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu86161y7zrXrXLvOtetcu85V20PbQ9tD20Pbgxtv7ry59e57b+2bb+27b+3bb+37b+0bcO07cO1bcO17cLXnd659F659G67Xfbh/KGmlrazV88yjHq2yVbV6nns0jlarlbTSVk8Nate5dp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5dp1r17l2nWvXuXada9e5VntUe1R7VHtUe1R77PbY7bHbY7fHbo/dHrs9dnvs9tiPhx1Hq9VKWulNKbvq/PhQ3ipaZatq9TyR2jparVbSSls9j6W2vFXc16mtbFWt+tm069yEp9N+PO06t65z6zq3rnPrOreuc+s6t65z6zo35RG4PbrOrevcus6t69y6zo1nbB6yecrmMXs8Z7cHT9o8avOszcN217l1nVs/b1s/cFs/cZvzMN8e/dBt/dRt/dht/dxt/eBt/eRt/eht/ext/fBtQcegPaJ/5/0Abv0Ebtd9+8d1mquVtNJWT4vG0ltFq2z1tGksH15ZHa1WK2n11KB1nVvXuXWdW9e5dZ1b17l1nVvXuXWdW9e5dZ1b17l1nVvXuXWdW9e5d51717l3nfuhrayVt4pW2apatcdqj9Ueqz1We6z2WO2x2mO1x2qP1R7SHtIe1/P5/lB608fFWnmraJWt6qaPdwfNu4Xm3UPzbqL5VefrQ1krv69T12iVrbot1XXuXefede5d5250vbrt1XXuXefede5d505XjbYafTUaa3TWRmutPWiu0V2jvdZ17l3n3nXuXefede5d5x7079qj+2zede5d596tNu9em3ezzbvb5t1u8+63edIkbI9uuXn33Lybbt5dN++2m/fzuffz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sERhicIShSUKSxSWKCxRWKKwRGGJJm6FW+FWuBVuhVvhVrgVboVb4bZx27ht3DZuG7eN28Zt47afqb8/8jl9SOvMgbTOjk7rzwmn9eeE0zpzIK0zB9I6OzqtPyec1p8TTjueaZa0dSCfXlDaEqQiuwKYe02DJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWkPea5L0mea9J3muS95rkvSZ5r0nea5L3muS9JnmvSd5rkvea5L0mea9J3muS95rkvSZ5r0nea5L3muS9JnmvSd5rkvea5L0mea9pwVVCv4S817R4TmnTIpCJLORzSpt33uslF1KQzylt3nmvl3RkIBPZ1W2wxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicES27j1OU6S95rkvSZ5r0nea5L3muS9JnmvSd5rkvea5L0mea9J3muS95rkvSZ5r0nea5L3mr6eqb/0/pxw+mpOemdHp3d2dHpnR6f354TTxZCODGQin2mWdGlOuj6ntOn9/TjJ3Gsy95rMvabDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LyHtN8l6TvNck7zXJe03yXpO81yTvNcl7TfJek7zXJO81yXtN8l6TvNck7zXJe03yXpO81yTvNcl7TfJek7zXJO81yXtN8l6TvNf04iqhX0Lea3o90yzp5chAJvKZZsk77/WUnR2d3tnReee9npfyVqQhHRlIqhuWOCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSnOOQ95rkvSZ5r0nea5L3muS9JnmvSd5rkvea5L0mea9J3muS95rkvSZ5r0nea5L3muS9Zugz9ZehfbISWsjmZHR2dEZnR2dYn6yEKdKQjgzkM82SYYV85hQy/EAuZFcAc68ZsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAEvJek7zXJO81yXtN8l6TvNck7zXJe03yXpO81yTvNcl7TfJek7zXJO81yXtN8l6TvNck7zXJe03yXpO81yTvNcl7TfJek7zXJO81s2fok7zXJO8183hOoDMPQzoykM8JdN55r5dsTmZnR+ed9xqnFKQiDenIru6EJQlLEpYkLElYkrAkYUnCkoQlCUsSliQs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u4z8dhn57TLy2+Web7dLc053z7ffOobOoWtozunu+fZbr6FlaB26577knm+/NfM593z7rUcdDV6N+XbJwascvMrBqxy8ysGrHLzKwascvMrBqxq8qsGrGryqwasavKrBqxq8qsGrGryqwauR3y4jv11GfruM/HYZ+e0y8ttl5LfLyG+Xkd8uI79dRn67jPx2GfntMvLbZeS3y8hvl5HfLiO/XUZ+u4z8dhn57TLy22Xkt8vIb5eR3y4jv11GfrsUn8eRkd8uI79drvn2i7fXfPujZWgdmjmKa7790TF0Ds0cxTXffmu+b0KK75uQ4vsmpAavavCqBq9q8KoGr2rwqgavavCqBq9q8KoGr2rwqgavavCqBq9q8KoGr2rwqgavavCqxvngyG+Xkd8uI79dRn67jPx2GfntMvLbZeS3y8hvl5HfLiO/XUZ+u4z8dhn57TLy22Xkt8vIb5eR3y73fLtdmjmKe7791j50DJ1DM0dxz7efevN9E7L5vgnZfN+E3PPtcWkbmjmKe7791jk0dTTm22UPXu3Bqz14tQev9uDVHrzag1d78GoPXu3Bqz14tQev9uDVHrzag1d78GoPXu3Bqz14NfLbZeS3y8hvl5HfLiO/XUZ+u4z8dhn57TLy22Xkt8vIb5eR3y4jv11GfruM/HYZ+e0y8ttl5LfLyG+Xkd8uI79dRn67jPx2GfntMvLbZeS3y8hvl+3junLmcq/59kczl3vNtz96Dc1c7jXfLnbpD1+5/zc+dAydQ9fQG33y6tFraBlahx6+yd+FzeedZfN5Z9l83lk230cvm887y+bzzrL5vLPswas9eLUHr/bg1R682oNXe/BqD17twas9zgdHfruM/HYZ+e0y8ttl5LfLyG+Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfrwffR68H30evB99Hrweed9eDzznrwffR68H30evB99HrweWc9+D56PeCVHvBKD3ilB7zSA17pAa/0gFd6wCs94JUe8EoPG742fG342vC14WvD14avDV8fvj58ffj68PXh68PXh68PXx++Pnxj+MbwjeEbwzeGbwzfGL4xfGP4xvDN4ZvDN4dvDt8cvjl8c/jm8M3hm8O3hi95fXrwfRN6cD6oB983oQffN6EH3zehB+eDevB9E3rwfRN68H0TenA+qAfng3rsUb971O8e9btH/e5Rv3vU7+DVGrxag1dr8Grkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11Hfrsuvm9C7/z2W8PJxfdN6OJ8UBfng7o4H9TF903o4vsmdHE+qIvzQV2cD+ri+yb0nm+/dd/n6OL7JnRxPqgjv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9cx3673fPt1Le2eQ9aR364jv13v/PZb9xyyjvx2Hfnteue337rn3HTkt+vIb9eR367C+aCO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfrmLDl/x2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv13HfLuO/HYd8+065tt15LfryG/XO7/90nIM3XPIf7QMrUPb0D3npiO/XUd+u17z7Y+GzyO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068tt15LfryG/Xkd+uI79dR367jvx2HfntOvLbdeS368hv15HfriO/XUd+u478dh357Try23Xkt+vIb9eR364jv11HfruO/HYd+e068ttVY/jG8I3+HJ+O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/vbE35742xN/e+JvT/zt+ev0dno7vZ3eoDfoDXqD3vieO+fvft85f/f5YJ799j/u5e9+3zl/9/vO+bvPB/Pst/9xL3/3+875u993zt99Ppi/+3ww8bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/zt+Rv0TnonvZPeSe+kd9I76Z30TnonvYveRe+id9G76F3f38/5u993zt/9vnP+7ved83efD+bvPh/M330+mL/7fef83e875+8+H8zffT6Yv/t8MH/3+875u993zt/1yWS733fOdp8PJv72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+eDV41eNXgVYNXDV41eNWC3qA36A16g96gN+lNepPepDfpTXqT3qQ36U16i99VfXvIefbb3xzkJH97yHn22988yYv87bnl2W9/cyN3cpDv9Yu/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3s2eNXgVYNXDV41eNXgVVv0LnoXvYveRe+md9O76d30bno3vZveTe+m987bs995e/Y7b89+5+35+Nvz5G/PLR9/+5MHeZIX+dtzy8ff/uRG7uQgf3/H5rPf/uTvPZF89tufvMj3OsLfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9uzwqsOrDq86vOrwqsOrXvQWvUVv0Vv0Fr1Fb9Fb9Ba9g95B76B30DvoHfQOege/q0HvoHd+e8h59tvf3MlB/vaQs9/3nbPf952z3/ed8+y3H8b2+75z9vu+c/b7vnP2+3ww8bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+Jvzw6vOrzq8CrgVcCrgFdxnw9m3OeDGff5YMadt2fceXvGnbdn/Oht9DZ6G72N3kZvo7fR2+ht9DZ6O72d3v69x5dx33fOuO87Z9z3nTPu+84Z9/lgxn3fOeO+75xx33fOuN93zrjPB/PZbx8nJ/l7TySf/fYnT/K9jvC3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e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7YW/vfC3F/72+nV6O72d3k5vp7fT2+nt9Aa9QW/QG/QGvUFv0Bv0xvf3cz3+9pPv91Lr8bc/uZODnOSPk/Xstz95khd531zf38/17Lc/+fs7p5799icn+buOCn974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC397/Ra9i95F76J30bvoXfQuehe9m95N76Z307vp3fRueje9m947v6p251fV7vyq2G+vdv1X1e73Uqvd76XW2W9/8yR/e8jV7vdS6+y3v7mRvz23avd7qdXu91Lr7Le/eZDv9Yu/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3s1eNXgVYNXDV41eNXgVQt6g96kN+lNepPepDfpTXqT3qQ36S16i96it+gteove+t4TqXa/l1rtfi+12v1eaj3+9ic38rfnVu1+L7Xa/V5qPfvtTx7k7+/Yevbbn/y9J1LPfvuTG5nrCF7hby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NurwasGrxq86vCqw6sOr/qdt1e/8/bqd95e/c7bq995e/U7b6/+o7fR2+ht9DZ6G72N3kZvo7fR2+i9/qtiv73Yb69+v5da/X4vtc5++5sH+dtDrn7fd65+33euft93rn6/l1r9vu9c/b7vXP2+71z9Ph8s/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbq8OrDq86vOrwqsOrDq960Vv0Fr1F76B30DvoHfQOege9g95B76B30DvpnfROeie9k975vcdX/b7vXP2+71z9vu9c/b7vXP0+H6x+33euft93rn7fd65nv/3JRR4fh5/99id/74nUs99+8uY6glf42wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LdXwCv87YW/vQJeBbwKeBWdXngV8Co6vZ3eTm+nt9Pb6e30Br1Bb9Ab9Aa9QW/QG/QGvdd/Vey3F/vtFfd7qRX3e6l19tvfXORvD7nifi+1zn77my+f434vteJ+L7Xifi+1zn77m5N8uYG/vfC3F/72wt9e+NsLf3vhby/87YW/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2PesknNOzjk55+Sc799X45ecc3LOyTkn55yc8/n76pxttXtWxTkX51ycc3HOh1fnPItz/uNVP///XPQO/vteXo2z3/783xz0DnoHvYP/vmPe/xZjkfnvO/nvO9v9bzE7OchJrnv+c5AneZH577v437v437s6Ocj89138913j/vda8/5vX4u8b94/Mv99d7//jXaQ+T1vuLEHmXPenPO+53z228+5nf32N3dykC83zn77mwd5khf5/q7OfvubG7mTg5zk7++6cfbbz1md/fY3L/I957Pf/ubv741x9tvffLlx9tvfXORBnuRFvnw+++1v5pyDc47LjbPf/mbOOTjn4Jzv/eBowTkn55ycc3LOyTln3rPNe/2e/fY3c87JOSfnXL97nsU51+Xz2W9/M+dcnHNxzsU51+Xz2W9/8uCcB+c8Lp/PfvubOefBOQ/OeVw+n/32N3POk3OenPPknGfcs52Xk2e//c2c8+ScJ+c8798bZ7/9zfffwbPf/mbOeXHOi3NenPO6/w6e/fY3c86bc97338Gz3/5mznlzzptz3vffwbPf/mbO+d4Pjn7vB0e/94Pj7Lefsz377eeszn77m4s8yJN8/944++1Pbvffo7Pf/uZODnKSi3z/3jj77W9e5HvOZ7/9nNXZb39zJwc5yfffo37nV6Pf+dXo935w9M45B+cc9++6s9/+nFVwzsE5B+ccnHPcvzfOfvub779HZ7/9zZxzcs7JOSfnnPfvurPf/mbOOTnnvP/un/32N3POxTkX51z336Oz3/5mzrk45+Kc+fvq7Lc/Zzvuv/udv686f191/r7q/H119tuf8xyc87h/13V41eFVh1dnv/35vznphVcdXnV4dfbbn/8Wc5H577v477sun89++5uDnOTLjbPf/uZJXmT++27+927+9+5ODjL/fTf/fff9u65vuLEX+f47ePbb39zI9++Ns9/+5vt7Du4Hz377myd5ke85n/32c25nv/3NnRzky42z3/7mQZ7kRb6/q+B+MO68fcSdt4+48/YRd94+zn77OdvgfvDst795kTnn4Jzj/r1x9tvffLkR3A+e/fY3c87BOQfnHJfPZ7/9zZxzcs7cD5799jdzzsk5J+fM/WBwPxjFORfnXJxzcc51/64L7gejOOfinItzLs553L83zn77my+fz377mznnwTkPzpn7wbPf/pzb4Jwn58z94Nlvf85qcs6Tc+Z+MLgfPPvtz/lMznlyztwPBveDwf3g2W9/znZdTp799jdzztwPBveDZ7/9Oc/NOe/77+DZb38z58z9YHA/GNwPnv3259w257zvOSf3g2e//ZzV2W9/c5CTXOT77+DZb3/zIt9zTu4Hk/vBs99+zvbst5+zOvvtby7yIE/y/Xvj7Lc/ud9/j85++5s7OchJLvL9e+Pst795kTnnuH9vnP32N3PO3A8m94N5nw+ODM45OGfuB5P7weR+8Oy3P2eb99/9s9/+Zs6Z+8HkfvDstz/nmZxz3n+Pzn77mzln7geT+8HkfvDstz/nVpxzcc7cD5799uesBuc8OGfuB5P7wbPf/pzP4JwH58z9YHI/mPx9dfbbn7Od99/95O+r5O+r5O+r5O+rs9/+nOfknOf9uy7hVcKrhFdnv/35v7nohVcJrxJe5X0+OPI+Hxy5+O+7+e97nw+OvM8HR97ng+Pst78ZbtzngyPv88GR9/ngOPvtJxf3g8X9YN3ng6Pu88FR9/ngOPvtb75/1xX3g3WfD466zwdH3eeD4+y3v/n+vXH22998f8/F/WDd54Oj7vPBUff54Dj77U++zwdH3eeDo+7zwXH22998uVH3+eCo+3xw1H0+OM5++5vv76q4H6zgnINzDs45OOe4f9cV94MVnHNwzsE5J+d8nw+Os9/+5suN4n6wknNOzjk55+Sc7/PBUcU5F+dcnDP3g1Wcc3HOxTkX58z9YHE/WMzbi3l7Dc55cM7j/l1X3A8W8/YanPPgnAfnfJ8PjrPf/ubL55qc8+ScJ+c8OWfuB+s+Hxw1OefFOXM/WPf54KjFOS/OmfvB4n6w7vPBUYtzXpwz94PF/WBxP3j225+zvc8HR23OeXPO3A8W94PF88Gz3/7m++/g4Png4Png4H5wcD84uB8cPB8cPB8cPB8c3A8Ong8Ong8Ong8O7gcH94OD54OD54OD54OD+8HB/eDgfvDst5+zHTwfHDwfHDwfHNwPDu4HB88Hz377k3k+OHg+OHg+OLgfHNwPDu4HB88HB88HB88HB/eDg+eDg+eDg+eDg/vBwf3g4Png4Png4Png4H5wcD84uB88++3P2fJ8cPB8cPB8cHA/OLgfHDwfPPvtb77/Ho3BOQ/OmfvBwf3g4H7w7Lc/5zY458E5cz847v7VOPvtb+acuR8c3A+Ou381xuScJ+fM/eDgfnDw99XZb3/O9u5fjcHfV4O/rwZ/Xw3+vjr77c95Ls553b/rBrwa8GrAq7Pf/vzf3PTCqwGvBrwaPB8cPB8cPB+c7DNMng9Ong9Ong+e/fY3X25Mng9Ong9Ong+e/fYncz84uR+cPB+cPB+cPB+c7DOc/fbz32tyPzh5Pjh5Pjh5Pnj22998/944++1vvr/nyf3g5Png5Png5PngZJ9h8nxw8nxw8nzw7Le/+XJj8nxw8nxw8nzw7Le/+f6uJveDk+eDk+eDk+eDk32Gs9/+nC33g5Png5Png5Png2e//c33742z3/7my43J/eDk+eDk+eDk+eAszpnng5Png5Png3NwztwPTp4PTp4PTp4PzsE5cz84uR+czNsn8/bJ88E5Oed5/66b3A9O5u2T54OT54Nzcs48Hzz77W++fJ48H5w8H5w8H5w8H5zcD06eD06eD06eD07uByfPByfPByfPByf3g5P7wcnzwcnzwcnzwcX94OJ+cHE/ePbbz9kung8ung8ung8u7gcX94OL54Nnv/3N99/BxfPBxfPBxf3g4n5wcT+4eD64eD64eD64uB9cPB9cPB9cPB9c3A8u7gfZbx/stw/22wf77YP99sF++3j228/Z8nxw8Xxw8XxwcT+4uB9cPB989ttP5vng4vng4vng4n5wcT+4uB9cPB9cPB9cPB9c3A8ung8ung8ung8u7gcX94OL54OL54OL54OL+8HF/eDifvDstz9ny/PBxfPBxfPBxf3g4n5w8Xzw2W9/8v33aLF/tSbnzP3g4n5wcT949tufc5uc8+ScuR9c7F89++1P5py5H1zcDy72rxb7V2txztwPLu4HF39fnf3252zZv1r8fbX4+2rx99Xi76tnv/2c5+ac9/27jv32wX77YL99PPvt4+QgJ7nIg3z5vHk+uHk+uNln2Dwf3Dwf3DwfPPvtb77c2Dwf3Dwf3DwfPPvtT+Z+cHM/uHk+uHk+uHk+uNlnePbb8+TLjc3zwc3zwc3zwWe//cn3741nv/3J9/e8uR/cPB/cPB/cPB/c7DNsng9ung9ung+e/fY3X25sng9ung9ung+e/fY387vifnDzfHDzfHDzfHCzz/Dst5+z5X5w83xw83xw83zw2W9/8v1749lvf/LlxuZ+cPN8cPN8cPN8cLMvunk+uHk+uHk+uNkX3dwPbp4Pbp4Pbp4PbvZFN/eDm/vBzbx9M2/fPB/c7Is+++3nbLkf3MzbN88HN88HN/uim+eDz377ky+fN88HN88HN88HN88HN/eDm+eD+z4fnL/7fHD+7v3g/N3ng/N3nw/O330+OH/3fnD+7v3g/N3ng/N3nw/O330+OH/3fnD+7v3g/N37wfnst+fJHyfn7z4fnL/7fHD+7v3g/N37wfm7zwfns9/+5O/fwfm7zwfn7z4fnL97Pzh/935w/u794Pzd54Pzd58Pzl/nnINzvs8H5y845+Ccg3MOzvk+H5y/4JyDcw7OOTnn5Jyz37O9zwfnLznn5JyTc07O+T4fnM9++8n3+eD8FedcnHNxzsU5F+d8nw/OX3HOxTkX53yfD87f4JwH5zw458E53+eD8zc458E5D855cM6Tc57tnu19Pjh/k3OenPPknCfnfJ8Pzme//cn7ns/inBfnvDjnxTkvznnVPbfFOS/OeXHOd/9qPvvtT+acN+e8Oee7fzV/m3PenPPmnDfnfP++mme//Zxtu/tXs92/r2a7f1/Ndv++mu3+fTWf/fZ58iR/f9fNs9+e5//7M29/ciN38r/eipOTXORBnuR/vdVP3jf/8arO/94/Xr25k4Oc5CIP8iQv8r456A16g96gN+gNeoPeoDfoDXqT3qQ36U16k96kN+lNepPepLfoLXqL3qK36C16i96it+gtege9g95B76B30DvoHfQOege9f7yq8zv/49Wb/3rPb/6PV28OcpL/es9v/o9Xb57kRd43L66jxXW0uI7OvuiTk1zkQZ7kReb63fRueje9m95N76Z307vp3fTu23v229/cyJ0c5CQXeZAneZHphVcdXnV4dfbb30xvo7fR2+ht9B5e/f0bcfbb3/z3u2ond3KQk1zky8mz3/7mRd43H149uX38PPvtb/7rrZOTXOR7HXV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXp399idPeie9k95J76R30jvpnfROeie9i95F76J30bv4Xf3x6jD27Le/eZIXeX+MPfvtb27kTv7rPdfgH6/eXORBnmSuX3gV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq7Pf/uROb6e309vp7fR2eju9nd5Ob6c36A16g96gN+gNeoPew6vfyetj6dlvf/Lh1ZMbuZPv37Fnv/3NRR7kSb5/x5799icfXtXJjdzJ9zoKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvzn77m+ld9C56F72L3k3vpnfTu+nd9G56N72b3k3vvr1nv/3N93d19tvf//cg58fbs9/+5kGe5PXx9uy3P7n9yI381ztODnKSizzIlxsJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8Ovvtb6Y36E16k96kN+lNepPepDfpTXqT3qK36C16i96it+g9vPqdPD/Gnv32N18+n/32Nzdy/xh79tvfnOQiD/L8OHz229+87/Uyf2SuI3iV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrgldnv/3NnRzkJBd5kCd5kelt9DZ6G72N3kZvo7fR2+ht9DZ6+/1dFfOrYn519tsPb89++5uLPMjz4+3Zb3/z5fPZb3/zX+84uZODnOQiX24UvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXw6uy3v5neorfoHfQOege9g95B76B30DvoHfQOeie9k95J76R30nt49Tt5fIw9++1vXuTL57Pf/ub2Mfbst785yEku8vg4fPbb37zu9bIun89++5u5juBVwauCVwWvCl4VvCp4VfBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqMG8f8GrAq8G8fTBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/M2wfz9sG8fTC/GsyvBvOrs99+fkuD+dVgfnX22w9vz377m5Nc5PHx9uy3v3mRL5/Pfvth7Nlvf3MnBznJlxsDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDV2W9/M72T3knvpJd5+2DePpi3D+btg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YN5+2DefvbbD5PPfvth7Nlvf/MkL/Ll89lvP4w9++1v7uQgJ7k+Dp/99jfP73o5++1vvtfRhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFeTefuEVxNeTebtk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TePplfTeZXk/nVZH41mV+d/fbnt8T8ajK/Ovvth7dnv/3NQU5yfbw9++1vnuRFvs/pzn77mxu5k4N8uTHh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15Nng9Ong9Ong9Ong9O5u2Tefti3r6Yty/m7Yt5+2Levpi3L+bti3n7Yt6+mLcv5u2Lefti3n722w+Tz377YezZb3/zIE/yIt/ndGe//c2N3MlBzo/DZ7/9zeO7Xs5++5sX+V5HC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXi3n7glcLXi3m7Yt5+2Levpi3L+bti3n7Yt6+mLcv5u2Lefti3r6YXy3mV4v51WJ+tZhfnf3257fE/Goxvzr77Ye3Z7/9zZ0c5LtHcfbb3zzIk3z3KM5++5P3j9zInQw34NWCVwteLXi14NWCVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebZ4Pbp4Pbp4Pbp4Pbubtm3n7Zt6+mbdv5u2beftm3r6Zt2/m7Zt5+2bevpm3b+btm3n7Zt5+9tsPk89++2Hs2W9/c5EHeZLvHsXZb39y/siN3Mnxcfjst7/57lGc/fY3T/K9jja82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrzbz9g2vNrzazNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zbx9M7/azK8286vN/Gozvzr77c9v6Y9X4/z2/nj15v3mdfbb39zInRzkf71jnPyvd8yTB3mSF3nf/MersU9u5E4OcpL/etfJg/yvd/5OXuS/3vaX/3j15kbu5CAnuciDPMmLTG/QG/QGvUFv0Bv0Br1Bb9Ab9Ca9SW/Sm/QmvUlv0pv0Jr1Jb9Fb9Ba9RW/RW/QWvUVv0Vv0DnoHvYPeQe+gd9A76B38rv54NePkffMfr97cyP96Z54c5CQX+V/vPNfaH6/evMj75j9evZnrd3H9Lq7fP169uciDPMmLDDc23Nj0bno3vZveTe+md9O76YVXDV41eNXgVYNXZ7/9zUUe5EleZHobvY3eRm+jt9Hb6G30NnobvY3ew6txcvv4efbb3xzkJBd5fPw8++1vXuR9c/zI7WPs2W9/c3zXxdlvf3OR73XU4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDV2e//c30DnonvZPeSe+kd9I76Z30TnonvZPeRe+id9G76F38rha9i94/Xh3env32N18+n/32N7ePt2e//c1BTvLf7/lcj3uQJ3mRL587vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq/Ofvub6e30dno7vZ3eTm+nt9Pb6Q16g96gN+gNeoPeoDfoDXoPr/6YfPbbD2PPfvubOznISa6PsWe//c2TvMiXz2e//XD47Le/uX/Xy9lvf3OS73XU4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXh19tvfTC+8Ovvtb6Z30bvp3fRueje9m95N76Z307vp3bf37Le/uZE7+f6uzn77+/9e5PHx9uy3v3mRL5/Pfvvh7dlvf3MnB/nv99xPLvIgT/IiX24EvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXw6uy3PznpTXqT3qQ36U16k96kN+lNeoveorfoLXqL3qK36C16D6/GyXfOcPbb39zInRzkO2c4++1vHuRJXuT9cfjst7+53etldjLXEbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeJXwKuFVwquz3/7mJBd5kCd5kelt9DZ6G72N3kZvo7fR2+ht9DK/SuZXyfzq7Lef31Iyv0rmV2e//fD27Le/eZIXeX+8Pfvtb27kTv77PfeTk1zkQZ7ky42EVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJenf32N9M76B30DnoHvYPeQe+gd9A76B30TnonvZPeSe+kd9I76T28GiffOfDZb3/y+pEbuZPvHPjst7+5yIM8yevj8Nlvf/K5HzzXy25kriN4lfAq4VXCq4RXCa8SXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXxby94FXBq2LeXszbi3l7MW8v5u3FvL2Ytxfz9mLeXszbi3l7Mb8q5lfF/KqYXxXzq7Pffn5LxfyqmF+d/fbD27Pf/uZBnuT18fbstz+5fuRG/vs995ODnOQiD/LlRsGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa/Ofvub6Z30LnqZtxfz9mLeXszbi3l7MW8v5u3FvL2Ytxfz9mLeXszbi3l7MW8v5u1nv/0w+ey3H8ae/fY3Xz6f/fY3N/J9Tnf229+c5CIP8vw4fPbb37y/6+Xst7+5ke91NODVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NZi3D3g14NVg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mLcP5u2D+dVgfjWYXw3mV4P51dlvf35LzK8G86uz3354e/bb31zkQZ4fb89++5svn89++5v/fs/95E4OcpKLfLkx4NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDZ4PDp4PDp4PDp4PTubtk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN5+9tsPk89++2Hs2W9/8yJfPp/99jffPYqz3/7mICe5yHeP4uy3v/nuUZz99ifHj3yvowmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCq8m8fcKrCa8m8/bJvH0yb5/M2yfz9sm8fTJvn8zbJ/P2ybx9Mm+fzK8m86vJ/Goyv5rMr85++/NbOvsM51r449Wb/zh5fud/vHpzkv84eX63d799sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9fq9Hb6G30NnobvY3eRm+nt9N7/VdrXf/VWtd/tdb1X61nv/3Jf/t1cfIi75uv/2qt679a7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77WpPeSe+kd9F79kXr5G+/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX89++5MvJ9lvX+y3L/bb177+q8V++2K/fbHfvthvX/v6rxb77evZb3/yt4e82G9fz377k+91xH77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bb1970bn5X533nefJ+8z777W9u5P4ydp/99jcnuch/vePkSV7kfXP7kb/rd/8ur/bv8mr/Lq/27/Jq/y6v9u/yav8ur/bv8mr/Lq/2r9Pb6e30dno7vZ3eTm+nt9Mb9Aa9QW/QG/QGvUFv0Bv0Br1Jb9Kb9Ca9SW/Sm/QmvUlv0nt49Tu5vSzdZ7/9zUFOcpHHy9J99tvfvMj75vEjf3/H7rPf/uZ4r4t99tvfXOTvOtq/y6v9u7zav8ur/bu82r/Lq/27vNq/y6v9u7zav8ur/Zv0TnonvZPeRe+id9G76F30LnoXvYveRe+id9O76d30bno3vZveTe+md9N7fTK7XZ/Mbtcns9v1yex2fTK7XZ/Mbtcns9v1yex2fTK7XZ/Mbj96G72N3kZvo7fd31Vr9DZ6z/vO8+RFvnx+/O1Pbh9vH3/7k4Oc5L/ecfIgT/IiXz43eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV61orfoLXqL3qK36C16i96it+gd9A56B72D3kHvoHfQO+gd9B5e/TH58be3kxu5k4Oc5PoY+/jbnzzJi3z5fPbbD4fPfvub+71eVpC5juBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVb/TCqw6veqO30dvo7fR2eju9nd5Ob6e309vp7fR2eoPeoDfovf723YPeoPfcD86TJ3mRL58ff/s6uZE7Och/vePkIg/yJC/y5UaHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjVB72T3knvpHfSO+md9E56J72T3knvonfRu+hd9C56F72L3kXv4dXv5P0x9vG3P7mROznI+TH28bc/eZAneZH3x+Gz3/7mb163z377m4N8r6OAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvIqgF14FvIqgN+gNeoPepDfpTXqT3qQ36U16k96kN+kteove4ndV9Ba9535wnjzIk7zI++Pt429/ciN38l/vODnJRR7kSb7cCHgV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FUsehe9m95N76Z307vp3fRueje9m947b9955+0777x9552377zz9p133r7zztt33nn7fvztv5O/OfB+/O0ntx+5kTv5mwPvvN/z2nm/57Xzfs9r5/2e1877Pa+d93teO68PeZ/99jd38r2OEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAqi154lfAqi96it+gteoveQe+gd9A76B30DnqZXyXzq2R+lcyvkvkV/vaNv33jb9+Pv32eXORBnuT18fbxt5+8fuRG/p7T7cff/uQkF3mQLzcSXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwquBVwauCVwWvCl4VvCp4Vff54K77fHDXj95GL/P2Yt5ezNuLeXsxby/m7cW8vZi3F/P2Yt5ezNuLeXsxby/m7cW8/fG3/07+ntPtx9/+5Mvnx9/+5Eb+ntPtx9/+5CQXeZDnx+Gz3/7m/V0vZ7/9zY18r6OCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCrm7QWvCl4V8/Zi3l7M24t5ezFvL+btxby9mLcX8/Zi3l7M24v5VTG/KuZXxfyqmF/hb9/42zf+9v342+fJSS7yIH97FPvxtz/58vnxtz/526PYj7/9yUFOcpEvNwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKvB88HB88HB88HB88HBvH0wbx/M2wfz9sG8fTBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/M2x9/++/kb49iP/72Jy/y5fPjb3/yt0exH3/7k4Oc5CKPj8Nnv/3N3x7FPvvtTx4/8r2OBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBvP2Aa8GvBrM2wfz9sG8fTBvH8zbB/P2wbx9Mm+fzNsn8/bJvH0yv5rMrybzq8n8ajK/wt++z377+p3cyP96Vzs5yEn+17v6yd9e/Z7XJ7Pn9cnsef0Me14/w57Xz7Dn9TPsef0Me14/w57Xz7Bnp7fT2+nt9Aa9QW/QG/QGvUFv0Bv0Br1Bb9Kb9Ca9SW/Sm/QmvUlv0pv0Fr1Fb33v4e5nv/3JSS7yIH/v4e5nv/3J++az3/7kv9518rdnvtlv3+y3b/bbN/vtm/32zX77Zr99s9++2W/f7Ldv9ts3++2b/fbNfvtmv32z377npHfRu+hd9C56F72L3kXvonfRu+jd9G56N72b3k3vpnfTu+nd9N73nfe67zvvdd933uu+77zXfd95r/u+8173fee97vvOe933nfe67zvv9aO30XvfH9xnv/3vva199tvf/PceQZ5c5EGe5L/3YvrJ++Y/Xr25kTv5Xr8LXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVgler6C16i96it+gteoveonfQO+g9vBonB/ly8uy3v3mQJ3mRLyfPfvubG7mTg5wfS89++5vHvRaOX/TJi8x1BK8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrDa82vNrwasOrDa82vNrwasOrDa82vNrwajd6G72N3kZvo7fR2+ht9DZ6O72d3k5vp7fT2+nt9Pb7u9rXJ7PPfvuTz/uDT27k/jH27Le/OclF/vs995MneZEvn89++5vv9bvh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLUHvYPeQe+gd9A76B30DnonvZPeSe+kd9I76Z30TnonvZPew6txcvtYuq9PZp/99jcnucjjY+m+Ppl99tvffPl89tvffP+OPfvtb457XRy/6JOLzHUErza82h+v+u/38epfbuRODnKSizzIk7zI9DZ6G72N3kZvo7fR2+ht9DZ6G72d3k5vp7fT2+nt9HZ6O72d3k5v0Bv0Br1Bb9Ab9Aa9QW/QG/QmvUlv0pv05vu7+pfpTXo/n8y/vMj75vqR28Pbf7mTg5zkv99zP3mQJ3mR980fr/7lRu7kICe5yIM8yYu8b570TnonvZPeSe+kd9I76Z30TnoXvYveRe+id9G76F30LnoXvYveTe+md9O76d30bno3vZveTe/h1fiX2+eT+ZcbuZODnOR6GPsvD/IkL/K++fBqndzI/btezn77m5N8r6MGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwavrb/+X6YVX19/+L9Ob9Ba9RW/RW/QWvUVv0Vv0Fr1F76B30DvoHfyuBr2D3s8n8y9P8iJfPrfPJ/MvN3InB/nv99xPLvIgT/IiX240eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXbd/e62//lxu5k4Oc5CIP8iQvMr2N3kZvo7fR2+ht9DZ6G72HV+Pk/TG29x+5kTs5yPkxtvciD/IkL/L+OPz425/8zuv+5U4O8r2OOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vrr/9X6YXXl1/+79M76B30DvpnfROeie9k95J76R30jvpnfQuehe9i9/VonfRe3wycfIgT/Ii74+3Z7/9zY3cyX+/53M97iQXeZAnGW7Aq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvotHb6O30dno7vZ3eTm+nt9Pb6e30dnqD3qA36A16g96gN+g9vBonv3Pgf/nyOfJHbuROfufA/3KSizzIk7w+Dj/+9pPP/eDv5Ebu5HsdBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuDV9bf/y/TCq+tv/5fpXfQuehe9m95N76Z307vp3fRueje9m17mV8n86uy3n99SMr9K5ldnv/3w9uy3v3mQJ3l9vD377U9uP3Ijv8/p/uUgJ7nIg3y5kfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwqsMeoPeoDfpTXqT3qQ36U16k96kN+lNeoveorfoLXqL3qL38Gqc/D6n+5cX+fI5x4/cyO9zun85yEku8iDPj8OPv/3J+14v80fmOoJXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8KnhVzNsLXhW8Kubtxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mLcX86tiflXMr4r5VTG/Ovvt57dUzK+K+dXZbz+8Pfvtby7yIL97FP/yIl8+V/zI7x7Fv9zJQU5ykS83Cl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFVFb9Fb9Ba9zNuLeXsxby/m7cW8vZi3F/P2Yt5ezNuLeXsxby/m7cW8vZi3F/P2x98+Tn73KP7lSV7ky+daP/K7R/Evd3KQk1zk8XH48bc/+d2j+Jcvn2tzHcGrglcFrwpeFbwqeFXwquBVwasBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKvBvH3AqwGvBvP2wbx9MG8fzNsH8/bBvH0wbx/M2wfz9sG8fTBvH8yvBvOrwfxqML8azK/Ofvv5LZ399jlObuQ/Ts6Tg5zkP06uk9+9+n95khd53/z5Gf7lRu7kICe5yPQWvUVv0TvoHfQOege9g95B76B30DvoHfROeie9k95J76R30jvpnfROeie9i95F79lvP7+Hs9/+5CQXeZD/9r3j5EXeN5/99if/7Zn3k9898385yEku8iBP8iLvL9/99n+5kTs5yEku8iBP8iLT2+ht9DZ6G72N3kZvo7fR2+ht9HZ6O72d3k5vp7fT2+nt9HZ6O71Bb9Ab9Aa9QW/QG/QGvUFv0Jv0fu8P/st/vfPkIP/1rpOLPMiT/Nc7Tt43n/dxntzInXyv3wmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCq7noXfQuehe9i95F76J30bvp3fQeXv1ODvLl5Nlvf/MgT/IiX06e/fY3N3InBzk/lp799jeP71o4++1vXuR7HS14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglfX3/4v05v0Jr1Jb9Kb9Ca9SW/RW/QWvUVv0Vv0Fr3F7+rzyfzL++bz/uCTG7l/jH387U9OcpH/esfJk7zIl8+Pv/3J9/pd8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxam95N76Z307vp3fRuevftvf72f7mROznISS7yIE/yItN7ePU7uX0s3a2Tg5zkIo+PpbtN8iJfPp/99jffv2PPfvub47suzn77m4t8r6MNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza8uv72f5neonfQO+gd9A56B72D3kHvoHfQO+id9E56J72T3snvatI76f18Mv/yIl8+P/72J7ePt4+//clBTvJf77ke1yBP8iJfPm94teHVhlcbXm14teHVhlcbXm14tS+v2u/yqv0ur9rv8qr9Lq/a7/Kq/S6v2u/yqv0ur9rv8qr9fvQ2ehu9jd5Gb6O30dvobfQ2ehu9nd5Ob6e309vp7fR2eju9nd7Dq99f/nwy/3Ijd3KQk1wvY9vv88n8y5O8yPvmw6t+ciP393ppZ7/9zUn+rqP2u7xqv8ur9ru8ar/Lq/a7vGq/y6v2u7xqv8ur9ru8ar+it+gteoveonfQO+gd9A56B72D3kHvoHfQO+id9E56J72T3knvpHfSO+md9E56F72L3kXvonfRu+hd9C56F72L3k3vpnfTu/ldbXo3vZ9P5l+e5EX++Nza55P5lxu5k4P81ztOLvIgT/IiX240eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXrdMb9Aa9QW/QG/QGvUFv0Bv0Br1Jb9Kb9Ca9SW/Sm/QmvYdXv5P3x9hWP3Ijd3KQ82NsqyIP8iQv8v44fPbb3/zN69rZb39zkO911OBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV4df3t/zK98Or62/9leje9d97err/9X27kTg5ykos8yJO8yPQ2ehu97f6urr/9X6b33A/Okwd5khd5f7x9/O1PbuRO/usdJye5yIM8yZcbHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVU96k96it+gteoveorfoLXqL3qK36B30DnoHvYPeQe+gd9B7ePU7+ZsDt7Pf/uT5IzdyJ39z4Hb2299c5EGe5PVx+Oy3P/nw6lwvq5G5juBVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXl1/+79ML7y6/vZ/md5Gb6O30dvp7fR2eju9nd5Ob6e309vp7fQGvXF/V9ff/i/Te+4H58lFHuRJXh9vH3/7yfkjN/L3nK49/vYnJ7nIg3y5EfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKsY9A56B72T3knvpHfSO+md9E56J72T3knvonfRu+hd9C56F72HV7+Tv+d07ey3v/nyOfaP3Mjfc7p29tvfnOQiD/L8OHz229+8v+vl7Le/uZHvdZTwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEV9ff/i/TC6+uv/1fpjfoDXqD3qA36U16k96kN+llfpXMr5L5VTK/SuZXj7/9/JaYXyXzq8ffPk9OcpEH+dujaI+//cmXzzl+5G+Poj3+9icHOclFvtxIeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVS56F72L3kXvpnfTu+nd9G56N72b3k3vppd5ezFvL+btxby9mLcX8/az336YfPbbD2PPfvubF/nyudqP/O1RtLPf/uYgJ7nI4+Pw2W9/87dH0c5++5P7j3yvo4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KubtBa8KXhXz9mLeXszbi3l7MW8v5u3FvL2Ytxfz9mLeXszbi/lVMb8q5lfF/KqYXz3+9vNb+uPVOtfCH6/e/K93nd/5H6/enOR/vev8bq9PptX1ybS6PplW18/Q6voZWl0/Q6vrZ2h1/Qytrp+h1fUztFr0LnoXvYveTe+md9O76d30bno3vZveTe9937mN+75zG/d95zbu+85t3Ped27jvO7dx33du477v3MZ937mN+75zGz96G72N3va9h9ue/fYnJ7nIg/y9h9ue/fYn75vPfvuT/3rXyd+eeWO/vbHf3thvb+y3N/bbG/vtjf32xn57Y7+9sd/e2G9v7Lc39tsb++2N/fbGfnsbQW/Sm/QmvUlv0pv0Jr1Jb9Kb9Ba9RW/RW/QWvUVv0Vv0Fr1F76B30DvoHfQOege9g95B76B30Dvpve8PtrPf/vfeVjv77W/+e48gTy7yIE/y33sx5xr549WT/3j15kbuZK5feDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE17NRm+jt9Hb6G30NnobvY3eTm+n9/BqnBzky8nH3/7kQZ7kRb6cfPztT27kTg5yfix9/O1PHt+1cPbb37zI9zqa8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvrr/9X6Z30jvpnfROeie9k95J76J30bvoXfQuehe9i97F7+r6ZNrZb3/yeX/wyY3cP8ae/fY3J7nIf7/ncw1en0w7++1vvnw+++1vvtfvglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDV6vR2eju9nd5Ob6e309vpDXqD3qA36A16g96gN+gNeoPew6txcvtYuq5Ppj3+9icnucjjY+m6Ppn2+NuffPn8+NuffP+OffztT47vujj77W8u8r2OFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8Or62/9lehe9m95N76Z307vp3fRueje9m977vnO7/vZ/uZE7Ocj3d3X97f/yIM+Pt2e//c2Xz2e//c3t4+3Zb39zkJP893vuJw/yJC/y5fOGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dVOepPepDfpTXqT3qQ36U16k96it+gteoveorfoLXqL3qL38OqPyfv6ZNq+Ppn2+NufHOQk18fYfX0y7fG3P3mRL58ff/s6uZH7vV5mkLmO4NWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXiFv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vZ+9tv/fksdf3vH395/1yfTz377mxd533x9Mv3st7+5k4P893vuJxd5kCd5kT9u9N/lVf9dXvXf5VX/XV713+VV/11e9d/lVf9dXvXf5VX/Jb1Fb9Fb9Ba9RW/RW/QWvUVv0TvoHfQOege9g95B76B30DvoHfROeie9k95J76R30jvpnfQeXo2T98vY/rs+mf77vjfxL3dykPNlbP9dn0z/fd+b+JcneZH3y+H++Nuf/M3r+tlvfzPX0eY62lxHm+t3c/1url941eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXuFv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72fvbbz28Jf3vH397Pfvvh7dlvf/MkL/L+eHv229/cyJ3893vuJye5yIM8yZcbDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVZv0TnoXvYveRe+id9G76F30LnoXvYveTe+md9O76d30bno3vYdX4+RvDtwff/tf7vd7E73f7030fr830R9/+z45yUUe5EleH4cff/vJ537wd3Ijd/K9jjq86vCqw6sOrzq86vCqw6sOrzq86vCqw6sOrzq86vCqw6sOrzq86vCqw6sOr/C3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97P/vtz29p0Dvo/ePV4e3Zb3/zIE/y+nh79tuffL830fv93kQ/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F9fv4vq9vMrfonfRu+hd9C56F72L3k3vpnfTu+nd9G56N72b3k0vvMLfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O159tvPbwl/e+Jvz7Pffnh79tvfPMiTvD7env32J9/vTWS735vIs99+GHv229+c5CIP8uVGg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41YreorfoHfQOege9g95B76B30DvoHfQOeie9k95J76R30jvpPbwaJ3/P6fLxtz/58rnd701ku9+byMffvk8OcpKLPMjz4/Djb3/yvtfL/pG5juBVg1cNXjV41eBVg1cNXjV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eEV/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742/Pst5/fEv72xN+eZ7/98Pbst7+5yIP87VHk2W9/8+Vzv9+byLPffhh79tvfHOQkF/lyo8OrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOqT3knvpHfSu+hd9C56F72L3kXvonfRu+hd9G56N72b3k3vpvfwapz87VHk429/8iJfPsf93kQ+/vZ9cicHOclFHh+HH3/7k789ijz77U++35vIgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CniFvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9jz77c9v6ewzjJMb+Y+T53f+x6s3J/mPk+d3e30yGdcnk3F9MhnXz5Bx/QwZ18+Qcf0MGdfPkHH9DBnXz5Ax6Z30TnonvYveRe+id9G76F30LnoXvYveRe+md9O76d30bno3vZveTe+m977vnHnfd8687zvns9/eTg5ykos8yH/73nHyIu+bz377k//2zPvJ3555st+e7Lcn++3Jfnuy357styf77cl+e7Lfnuy3J/vtyX57st+e7Lcn++3JfntmpzfoDXqD3qA36A16g96gN+gNepPepDfpTXqT3qQ3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XhW8KnhV8KqS3qQ36U16k96kN+lNeoveorfoLXqL3qK36C16i96i9/BqnNw+ltb1ydTjb39ykos8PpbW9cnU429/8uXz429/8v079vG3PznudXH8ok8uMtcRvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCV/jbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjb6+y3n98S/vbC317j+mTq7Le/+fL57Le/uX28Pfvtbw5ykv9+z/3kQZ7kRb58HvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GoPeQe+gd9A76B30DnoHvYPeQe+kd9I76Z30TnonvZPeSe+k9/Dqj8nj+mRqXJ9MPf72Jwc5yfUxdlyfTD3+9icv8uXz429fJzdyv9fLDjLXEbwa8GrAqwGvBrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrzC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e5399vNbwt9e+NtrXp9Mnf32Ny/y5fO8Ppk6++1v7uQg//2e+8lFHuRJXuTLjQmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GpOehe9i95F76J30bvoXfQuehe9i95N76Z307vp3fRuepm342+vx98+Tt4fY9f1ydS635uodb83Uet+b6LW9cnUuj6ZWvd7E7Xu9yZq3e9N1ONv/+Pw429/8p3Xnf32Nwf5XkcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglf42wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fvr7Pf/vyWmF/hb6+z3354e/bb3zzJi7w/3p799jc3cif//Z77yUku8iBP8uXGglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14tXg+iL+98LcX/vbC31742wt/e+Fv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n+ePr15eMOs8WefFOi/WebHOi593sc6Ldf746ru2H19912qxzot13qzzZp0/vspzmbmbuR9ffdf846uXF8w6f3z15Y+vXm4w6/zx1csdHjDrfFjnj69ePj++729/udb59u0vJ9zhAU94wRs+v2vRW63z7dtfDjjhDo/ftbh9+8vMxVefvv27/vf97S83OH5rft/f/nKHBzx/a37f3/7yhus+uu9v/67z9dWXA064w6wzvur4quOrjq86vur4quOrfn11r0tnna+vvjzhBW/41LW4vvoycwdzP776rj++un37y+Wrjq86vrrvb/8yvur4quOrT9/+Y9YZX3V81fHVfX/7y6wzvur4quOrjq86vur46vbtL9fvhY6vOr7q+Krjq9u3v5x1La6vvszczVx8dfv2l7mP8FXHV7dvf5n7CF91fHX79pe5j/BVx1cDX92+/eWAa50Hvhr4auCrga8Gvhrsrwb7q9u33+sy8NXAVwNf3b795Qmv37W4ffvLzGV/NfDV7dtfTrh8NfDV7dtfXnD5auCr27e/3GDWGV8NfHX79pcnzDrjq4GvBr4a+Grgq8H+arC/un3797rgq4GvBr4a7K8G+6vbt3+vxQiYuYO5+Or27S8vuHw18NXt219ucPlq4Kvbt788YNYZXw18dfv2Ly/uI3w18NXAVwNfDXw18NXt21/m+q76vT/w1cBXA1/dvv1l7qNdv/dv3/4yczdzr68+zw1u3/5ygz/rfP/5U568fXu//52vr7484QV/ru+4fH58+/aXG/yZuy4nXPfR5Dw48dXEVxNfTXw18dXkPDg5D07Og/P6al4uX018dfv2lzdc99HEVxNfTfZXk/3VxFcTX032V5P91cRXE19N9leT/dXEVxNfTXw12V9N9lcTX018NfHVxFcTX018NdlfTfZXk/3VxFcTX018Ndlf3b79++9nf3X79u+as7+a7K8m58HJ/mqyv5r4anIenOyvJvuria8m58HJ/mqyv5r4auKryXlwsr+a7K8mvpr4auKria8mvpqcByfnwcn+arK/mvhq4qvJeXCyv5qcByf7q8l5cLK/muyvJufByf5qsr+a7K8m58HJ/mqyv5rsrybnwcn+arK/WuyvFvurxXlwsb9a7K8W+6uFrxa+Wvhq4avbt9/rsjgPLvZXi/3VYn+18NXiPLjYXy3Og4v91eI8uPDV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twd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e2x8tTkPbp63b3y18dXmPLh53r7x1cZXm/Pg5nn7xlcbX218tTkP0rfHxlf07UHfHvTtQd8e9O1B3x707bF53r7xFX170LcHfXvQt8fmPLh53r7ZX22et298tTkPfvv2L5evNr7anAe/ffuXy1cbX23Og7dvf7nW+eCrg68O58HD83b69qBvD/r2oG+Pg68OvjqcBw/P20993zno2+Pgq4OvDufBw/P2w3nw9u0vMzeYS3916K++ffuXP+v8/ec3/87qrw791aG/un37y9VfHfqrQ391+/aXq7+6ffvLdR99+/Yvs8746uCrg68OvjqcBw/91bdv/3I9Vzn46uCrw3nw0F/dvv1l5uIr+vagbw/69jj4ir496NuDvj0OvqJvD/r2oG8P+vY4+Iq+Pejbg7496NuDvj3o24O+PQ6+Ouyv6NuDvj3o24O+PQ6+om8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG/Phq9anQez1fP2bPiq4atW58Fs9bw9G75q+KrVeTBbPW/Phq8avmr4qtV5MOnbs+Er+vakb0/69qRvT/r2pG9P+vZs9bw9G76ib0/69qRvT/r2bHUezFbP27MN5g7m4qtW58H89u2X8VXDV63Og/nt279cvmr4qtV5MG/f/jLrjK8avmqL+2hxH+Er+vakb0/69mz4quGrtri+m+tb33dO+vZs+Krhq7a5jzb3UZ0H8/btLzP3MLf6q2zVX+W3b//yZ52//3x5slV/la36q2zVX+Xt2y9H9VcZ1V9lVH+Vt29/+ddf5e3bX6776Nu3f7nWmb49A18Fvgp8FXUezKj+KqPeh5zfvv3+LPgq8FXUeTCj+qu8ffvLzMVX9O1J35707Rn4ir496duTvj0DX9G3J3170rcnfXsGvqJvT/r2pG9P+vakb0/69qRvz8BXwf6Kvj3p25O+PenbM/AVfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXsmvkrOg3m4j/BV4qvkPJiH+whfJb5KzoO9nrdnx1cdX3V81TkP0rcn729P+vakb0/69qRvT/r2pG9P+vbs9bw9O76ib0/69qRvT/r27JwHez1vz87+qgdz8VXnPPjt279cvur4qnMe/PbtXy5fdXzVOQ/evv1l1hlfdXzVOQ/2et6e9O1J35707Unfnh1fdXzVOQ/2zvWt7zsnfXt2fNXxVec82Ot5e3bOg7dvf5m5g7nVX2Wv/iq/ffuXP+t8//lZnuzVX2Wv/ip79Vd5+/aXf/1V9uqvsld/lbdvf/lvbqzL/5i7nvFv/+6f/t//9K///J/+87/81//nn/6P//8f/+//9b/+23/5n//83//b9//9n//f/3j/k//8r//8L//yz//3f/wf//rf/8t//T//17/+1//4L//9v/z9Z//0/P2ff/yX//f/+AFH/w//7p/+7qJ//4/z/L/7x7n8P/zbv/3bf/i3/w0=", "file_map": { "5": { "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n", "path": "std/cmp.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_0.snap index c86f4650ecf..8e563536681 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_0.snap @@ -33693,14 +33693,14 @@ expression: artifact "unconstrained func 4", "[Const { destination: Direct(21), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(20), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(0), size_address: Direct(21), offset_address: Direct(20) }, Const { destination: Direct(2), bit_size: Field, value: 0 }, BinaryFieldOp { destination: Direct(3), op: Equals, lhs: Direct(0), rhs: Direct(2) }, JumpIf { condition: Direct(3), location: 8 }, Const { destination: Direct(1), bit_size: Field, value: 1 }, BinaryFieldOp { destination: Direct(0), op: Div, lhs: Direct(1), rhs: Direct(0) }, Stop { return_data: HeapVector { pointer: Direct(20), size: Direct(21) } }]" ], - "debug_symbols": "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lt8uLb9dWn67tPx2OfntsTV94JPffnQ2PZuGz0E+g5z89qOlaW3amq65Lzn57UfXXIGc+fajWx01XrX5donGq2i8isaraLyKxqtovIrGq2i8isaraLyKxqtovIrGq2i8isaraLyKxqtovIrGq5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+uyTfx5GW3y4tv11OfrtuLU1r09Z0zX3JyW8/OpueTXNOd/Lbjx5NS9PaNNzIxqtsvMrGq2y8ysarbLzKxqtsvMrGq2y8ysarbLzKxqtsvMrGq2y8ysarbLzKxqts54Mtv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u5z89tiac7qT3350NJ1Nz6Y5pzv57UePpqVpbbrmvuTktx/NfM6Zbz+61VHjVZtvl2y8ysarbLzKxqtsvMrGq2y8ysarbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVez8arlt0vLb5eW3y4tv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y6T7+NIy2+Xlt8uJ79dtx5NS9PaNHMUJ7/96Gg6m2aO4uS3b83vTcjk9yZk8nsTMhuvZuPVbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVeznQ+2/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57XLy22Nr5ihOfvvR3nQ0nU0zR3Hy22+9+L0JWfzehCx+b0JOfvvc2ppmjuLMtx+dTVNHbb5dVuPVarxajVer8Wo1Xq3Gq9V4tRqvVuPVarxajVer8Wo1Xq3Gq9V4tRqvVuPVarxajVctv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afru0/HZZ3q4rZy735LcfzVzuyW8/ejTNXO6eb7fY+sPXzv/Gm46ms+nZ9ELfvHr0aFqa1qabb/K+sPi+syy+7yyL7zvL4vfoZfF9Z1l831kW33eW1Xi1Gq9W49VqvFqNV6vxajVercar1Xi12vlgy2+Xlt8uLb9dWn67tPx2afnt0vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2vfg9er34PXq9+D16vfi+s15831kvfo9eL36PXi9+j14vvu+sF79Hrxe80gte6QWv9IJXesErveCVXvBKL3ilF7zSC17pZc3Xmq81X2u+1nyt+Vrztebrzdebrzdfb77efL35evP15uvN15tvNN9ovtF8o/lG843mG803mm8032i+2Xyz+WbzzeabzTebbzbfbL7ZfLP5zuZLXp9e/N6EXpwP6sXvTejF703oxe9N6MX5oF783oRe/N6EXvzehF6cD+rF+aBeq9XvavW7Wv2uVr+r1e9q9dt4NRqvRuPVaLxq+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+ug9+b0JPffjScHPzehA7OB3VwPqiD80Ed/N6EDn5vQgfngzo4H9TB+aAOfm9Cz3z70fU5Rwe/N6GD80Ft+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2+XY98+37Wlo1h6wtv11bfrue+fajaw5ZW367tvx2PfPtR9ecm7b8dm357dry21U4H9SW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbVaz5kt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2ubb9eW365tvl3bfLu2/HZt+e165tu3lqvpmkPWlt+uZ779aGu65ty05bdry2/XM99+NHxu+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3/39M3Vuy5biubdkqTRIAH/WvWIQvSmL7G3Yt7YzcjKnuSxDUFfjbA397xKB30Du+9/gCf3vgbw/87RH3feeI+3ww8LcH/vbA3x7PfvuTL5+f/fZ1ciN/74nE429/MtcRvMLfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2RQS/zq2e/vZ1ML/Mr/O2Bvz2e/fYnXz7jbw/87fHstz85yN+eW+BvD/zt8ey3P3mRLzfwtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbIxe9i94zbx8nf3tugb898LfH429/cpC/PbfA3x742+PZb3/yIn/v8cWz3/7kO697/O1PDvK9jvC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3/5/phVf42wN/e+BvD/ztgb898Lf//6cEvfAKf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgb49ifsV+ezz77ee3xPyK/fbA3x742+PZb3/yIn97yIG/PZ799id38rfnFvjbA397PPvtT57kyw387YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72GMzbB/P2x98+Tr5zYPztgb89Hn/7kzv5zoHxtwf+9nj22588yd97fPHst598/e3x+Nuf3Mn3OsLfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O0xmF+x3x7Pfvv5LTG/Yr898LcH/vZ49tufPMnfPkPgb49nv/3JjXyf0+FvD/zt8ey3P3mQLzfwtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbYzJvn8zbH3/7OPk+p8PfHvjb4/G3P7mR73M6/O2Bvz2e/fYnD/L3Hl88++1P/t4Ticff/uRGvtcR/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+Bvj8n8iv32ePbbz2+J+RX77YG/PfC3x7Pf/uRBvnsU+Nvj2W//y89++5PvHgX+9sDfHs9++5OLfLmBvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHot5+2Le/vjbx8l3jwJ/e+Bvj8fffnL9yHePAn974G+PZ7/9yUX+3uOLZ7/9yXeP4vG3nzx+5Hsd4W8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9tjMr9hvj2e//e+39Oy3z5Mb+a93nRzkJP/17pP/9pDHyd8ecpz99jfvm/uP3MidHOQkF3mQ6b3vD8az335y/MiNfP9d2Pf9wXj2259c5Msr/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2xmbdv5u2beftm3r6Zt2/m7Zv51WZ+tZlfbeZXm/nVZn61mV/t+/5g7Pv+YOz7/mDs+/5gnP32J9/3B2Pf9wdj3/cHY9/3B2Pf9wcDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3v+Or2d3k5vpzfoDXqD3qA3vufO+bvfd87ffT6Yz357nrzI++b7fDCf/fZ+cicHOclF/q7fxN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PX+D3knvpHfSO+md9E56J72T3knvpHfRu+hd9C56F73r+/s5f/f7zvm733fO3/2+c/7u88H83eeD+bvPB/N3v++cv/t95/zd54P5u88H83efD+bvft85f/f7zvm7Ppls9/vO2e7zwcTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbs8GrBq8avGrwqsGrBq9a0Bv0Br1Bb9Ab9Ca9SW/Sm/QmvUlv0pv0Jr1Jb/G7qm8POZ/99icHOcnfHnI+++1PnuRF/vbc8tlvf3Ijd3KQ7/WLvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE397NnjV4FWDVw1eNXjV4FVb9C56F72L3kXvpnfTu+nd9G56N72b3k3vpvfO27PfeXv2O2/PfuftefbbD3vPfvth6dlvf/MgT/Iif3tuefbb39zInRzk7+/YfPbbn/y9J5KPv/3Ji3yvI/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+Jvzw6vOrzq8KrDqw6vOrzqRW/RW/QWvUVv0Vv0Fr1Fb9E76B30DnoHvYPeQe+gd/C7GvQOeue3h5zPfvuTOznI3x5y9vu+c/b7vnP2+75zPvvt53q87ztnv+87Z7/vO2e/zwcTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/727PCqw6sOrwJeBbwKeBX3+WDGfT6YcZ8PZtx5e8adt2fceXvGj95Gb6O30dvobfQ2ehu9jd5Gb6O309vp7d97fBn3feeM+75zxn3fOeO+75xxnw9m3PedM+77zhn3feeM+33njPt8MJ/99nVykr/3RPLxtz95ku91hL898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/ewa8wt+e+Nsz4FXAq4BXMeiFVwGvYtI76Z30TnonvZPeSe+kd9I76V30LnoXvYveRe+id/G7WvQuete3h5zPfvuTG7mTvz3kfPbbn1zkQf723PLZb3/y5XPe7ztn3ueDib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/eya8SniV8CrhVcKrhFfZ6e30dno7vZ3eTm+nt9Mb9Aa9QW/QG/QGvUFv0Bv0Br1J75m3j5O/Pbc8++1vTnKRB/nbc8uz3/7my+e833fOvM8H89lvXycH+c7rHn/7kwf5Xkf42xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bdnwiv87Ym/PRNeJbxKeJWLXniV8CoXvZveTe+md9O76d30bno3vZte5u3FvL2Ytxfzq2J+xX571vVfJfvtyX57PvvtcfLlc93vO2fd7zvns9+eJwc5yUX+9tzy2W9/8iJfPtf9vnPib/8/d3KQk1zkQZ7kRb7cKHiFvz3xtyf+9sTfngWvCl4VvCp4VfCq4FUlvUlv0pv0Jr3M24t5ezFvL+btxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mLef/fbD5LPffhh79tvfHOQkF/nOgc9++5sX+fK57ved89lvXyd38veeSD7+9idzHcEr/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbs+AV/vbE354DXg14NeDVYN4+4NWAV4N5+2DePpi3D+btg3n7YN4+mLcP5u2Deftg3j6Ytw/mV4P51WB+NZhfsd+ez357O5le5lfPfnucvMiXz+N+LzXH3WfIcb+XmuN+LzXH/V5qjrvPkON+LzXH/V5qjvu91Bz3e6mJvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE397Dng14NWAVwNeDXg14NXg+eDg+eDg+eDg+eBg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mLcP5u2Deftg3j6Ytw/m7eN+LzXPfvth7LjfS81xv5ea434vNcf9Xmqe/fbD2HG/l5rjfi81x/1eao77vdR89tvXyY38vSeS434vNcfmOoJX+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG354RX+NsTf3tOeDXh1YRXk3n7hFcTXk3m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3j6ZX03mV5P51WR+xX57Pvvt7WR6mV/N+73UnPd7qTnv91Lz2W8/+X4vNef9XmrO+73UfPbbn3z3KOb9XmrO+73UnPd7qfnstz/5cgN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bfnhFcTXk14NeHVhFcTXk2eD06eD06eD06eD07m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TefvbbD5Pn/V5qrvu91Fz3e6m57vdS8+y3v/nuUaz7vdRc93upue73UvPZb3/y9x5fPvvtT757FOt+LzUff/uT73WEvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE397LniFvz3xt+eCVwteLXi1mLcveLXg1WLevpi3L+bti3n7Yt6+mLcv5u2Lefti3r6Yty/m7Yv51WJ+tZhfLeZX7Lfns99+fktnfnV+z2d+9eS/3vObPPOrJ0/yX+/5PR8f8t81ta4POdf1Iee6PuRc14ec6/qQ8+y3v3mQJ3mR982L3vv+YD777U8OcpLvvwvrvj+Yz377kxf58gp/e+JvzwWvFrxa8GrBqwWvFrxaPB9cPB/cPB/cPB/czNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/M2zfz9s28fTO/2syvNvOrzfxqM7/azK8286t93x/Mfd8fzH3fH8x93x/Ms9/+5ru/se/7g7nv+4O57/uDue/7g4m/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG354ZXG15teLXh1YZXG15t5u2beftm3r6Zt2/m7Zt5+2bevpm3b+btm3n7Zt6+mbdv5u2beftmfrWZX23mV5v51WZ+tZlfbeZXm/nVZn7Ffnuy3577fh8nn/32OPn+/bzv91Lz2W9/cicH+f79vO/3UvPZb3/yJC/yd/0W/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zt9ev0dno7vZ3eTm+nt9Pb6Q16g96gN+gNeoPeoDfoje/v5zr77U++30uts9/+5k4OcpI/Ttaz3/7kSV7kfXN9fz/Xs9/+5O/vnHr87U9O8ncdFf72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72+i16F72L3kXvonfRu+hd9C56N72b3k3vpnfTu+nd9G56N713flXtzq+q3flVsd9e7fqvqt3vpVa730utZ7/9yZP87SFXu99LrWe//cmN/O25VbvfS612v5daz377kwf5Xr/42wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LdXg1cNXjV41eBVg1cNXrWgN+hNepPepDfpTXqT3qQ36U16k96it+gteoveorfore89kWr3e6nV7vdSq93vpdbZb39zI397btXu91Kr3e+l1rPf/uRB/v6OrWe//cnfeyL1+Nuf3MhcR/AKf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9eDV41eNXgVYdXHV51eNXvvL36nbdXv/P26nfeXv3O26vfeXv1H72N3kZvo7fR2+ht9DZ6G72N3kbv9V8V++3Ffnv1+73U6vd7qfXstz95kL895Or3fefq933n6vd95+r3e6nV7/vO1e/7ztXv+87V7/PBwt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vTq86vCqw6sOrzq86vCqF71Fb9Fb9A56B72D3kHvoHfQO+gd9A56B72T3knvpHfSO+md33t81e/7ztXv+87V7/vO1e/7ztXv88Hq933n6vd95+r3fed69tufXOTxcfjZb3/y955IPf72kzfXEbzC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+9Al7hby/87RXwKuBVwKvo9MKrgFfR6e30dno7vZ3eTm+nN+gNeoPeoDfoDXqD3qA36L3+q2K/vdhvr7jfS62430utZ7/9yUX+9pAr7vdS69lvf/Llc9zvpVbc76VW3O+l1rPf/uQkX27gby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72CngV8CrgVcCrgFcBr2LSO+md9E56J72L3kXvonfRu+hd9C56F72L3kXvpnfTu+nd9J55+zj523OruN9LrbjfS62z3/7my+e830utvN9LrbzfS61nv/3JSf7e46tnv/3J37yuHn/7k+91hL+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fvr4RX+NsLf3slvEp4lfAqg154lfAqk96kN+lNepPepDfpTXqL3qK36C16i17mV8n8iv32yuJ3xfyK/fZ69tvj5E4OcpK/PeR69tufPMmL/O251bPf/uRG7uQgX27gby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72SniV8CrhVcKrhFcJr3LTu+nd9G56N73M24t5ezFvL+btxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mLef/fbD5LPffhh79tvfPMiTvMh3Dnz229/cyJ0c5O89vnr225/8vSdSj7/9yYt8r6OCV/jbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv70KXuFvL/ztVfCq4FXBq2LeXvCq4FUxby/m7cW8vZi3F/P2Yt5ezNuLeXsxby/m7cW8vZhfFfOrYn5VzK/Yb69nv/38lphfsd9ez357nNzInRzkb5+h6n4vtep+L7Xqfi+16u4zVN3vpVbd76VW3e+lVt3vpRb+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O014NWAVwNeDXg14NWAV4Png4Png4Png4Png4N5+2DePpi3D+btg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YN5+2DePpi3j/u91Dr77Yex434vtcb9XmqN+73UGvd7qXX22w9jx/1eao37vdQa93upNe73UuvZb18nJ/l7T6TG/V5qjfu91MLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wt9eAV/jbC397DXg14NWAV4N5+4BXA14N5u2Deftg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mF8N5leD+dVgfsV+ez377ee3xPyK/fYa93upNe/3Umve76XWs9/+5G+Poub9XmrN+73Uevbbn/ztUdS830uteb+XWvN+L7We/fYnX27gby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72mvBqwqsJrya8mvBqwqvJ88HJ88HJ88HJ88HJvH0yb5/M2yfz9sm8fTJvn8zbJ/P2ybx9Mm+fzNsn8/bJvH0yb5/M289++2HyvN9LrXm/l1rzfi+15v1eap399jffPYp5v5da834vteb9Xmo9++1P/t7jq2e//cl3j2Le76XW429/8r2O8LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fvrwmv8LcX/vaa8GrCqwmvJvP2Ca8mvJrM2xfz9sW8fTFvX8zbF/P2xbx9MW9fzNsX8/bFvH0xv1rMrxbzq8X8iv32OvvtuU/+11tx8iQv8r75j1dvbuRODnKSi0xvp7fT2+kNeoPeoDfoDXqD3qA36A16g96kN+lNepPepDfpTXqT3qQ36S16i94/XtU6OchJLvIg/+sd7eRF3jf/8erN/3pHP7mTg5zkf73j/Mb+ePXmSV7kffPkf+/kf+/knCfnPDnnyTn/8arGyfP+b//j1Zv3zX+8enMj//Wea+SPV2/Oez5/vHrzIHPOi3NenPMfr55z25zz5pw35/zHq+esNue8OefNOW/Oed/f1dlvf3Mjd3KQk1zf2Z799nNWZ7/9zYt8z/nst7+5fed59tvfHN/5nP32Nxd5kCd5kfd3bme//c2N3MnxndXZb39zkQd5ku/1u+HVhlcbXm14teHV2W9/zjbu9Xv229/MOQfnHJzz4dU5z+Sc/3j1nE9yzsk5J+ecnHNyzn+8es4tOefinItz/uPVc1bFORfnXJxzcc51OXn229/MOQ/OeXDOg3P+49VztuNy8uy3v5lzHpzz4Jz/ePWc5+Sc/3j1nM/knCfnPDnnyTlPzvmPV8+5Tc55cs6Lc/7j1XNWi3NenPPinBfnvO6/R2e//c2c8+KcN+e8Oec/Xj1nu++/R2e//c2c8+acN+f8x6vnPPd3zuPst/+dzzj77W/u5CAnucjjPbdx9tvfvMj75j9e/Z3VOPvtb+7kICf5+/do/O7fV+N3/74av/v31fjdv6/G7/59Nc5++9/ZjrPf/ndW4+y3vznJRR7kec+zL/K+5xOcc3DOwTkH5xyc8x+vnnMLzjk45+CcY9+zSs45OefknJNzvn9fjV9yzsk5J+ecnHNyzufvq3O21e5ZFedcnHNxzsU5n7+vznkW53x4df7/uegd/Pe9vBpnv/35vznoHfQOegf/fce8/y3GIvPfd/Lfd7b732J2cpCTXPf85yBP8iLz33fxv3fxv3d1cpD577v477vG/e+15v3fvhZ537x/ZP777n7/G+0g83vecGMPMue8Oed9z/nst59zO/vtb+7kIF9unP32Nw/yJC/y/V2d/fY3N3InBznJ39914+y3n7M6++1vXuR7zme//c3f3xvj7Le/+XLj7Le/uciDPMmLfPl89tvfzDkH5xyXG2e//c2cc3DOwTnf+8HRgnNOzjk55+Sck3POvGeb9/o9++1v5pyTc07OuX73PItzrsvns9/+Zs65OOfinItzrsvns9/+5ME5D855XD6f/fY3c86Dcx6c87h8Pvvtb+acJ+c8OefJOc+4ZzsvJ89++5s558k5T8553r83zn77m++/g2e//c2c8+KcF+e8OOd1/x08++1v5pw357zvv4Nnv/3NnPPmnDfnvO+/g2e//c2c870fHP3eD45+7wfH2W8/Z3v2289Znf32Nxd5kCf5/r1x9tuf3O6/R2e//c2dHOQkF/n+vXH229+8yPecz377Oauz3/7mTg5yku+/R/3Or0a/86vR7/3g6J1zDs457t91Z7/9OavgnINzDs45OOe4f2+c/fY333+Pzn77mznn5JyTc07OOe/fdWe//c2cc3LO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299c5EGe5LtHcfbbn5w/ciN3cnwcPvvtb757FGe//c2TfK+jDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrzbx9w6sNrzbz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/Mrzbzq838ajO/2syvzn7781v649U6v70/Xr15v3md/fY3N3InB/mPz+vkPz7vkwd5khd53/zHq91ObuRODnKS//Xu38mD/K9395MX+a83/vIfr97cyJ0c5CQXeZAneZHpDXqD3qA36A16g96gN+gNeoPepDfpTXqT3qQ36U16k96kN+kteoveorfoLXqL3qK36C16i95B76B30DvoHfQOege9g9/VH692nbxv/uPVmxv57/c8Tg5ykov893s+19ofr968yPvmP169met3cf0urt/z99WTizzIk7zIcGPDjU3vpnfTu+nd9G56N72bXnjV4FWDVw1eNXh19tvfXORBnuRFprfR2+ht9DZ6G72N3kZvo7fR2+g9vFont4+fZ7/9zUFOcpHHx8+z3/7mRd43x4/cPsae/fY3x3ddnP32Nxf5XkcNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV4dfbb30zvoHfSO+md9E56J72T3knvpHfSO+ld9C56F72L3sXvatG76P3j1eHt2W9/8+Xz2W9/c/t4e/bb3xzkJP/9ns/1uAd5khf58rnDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8Orst7+Z3k5vp7fT2+nt9HZ6O72d3qA36A16g96gN+gNeoPeoPfw6o/JZ7/9MPbst7+5k4Oc5PoYe/bb3zzJi3z5fPbbD4fPfvub+3e9nP32Nyf5XkcdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1dnv/3N9MKrs9/+ZnoXvZveTe+md9O76d30bno3vZvefXvPfvubG7mT7+/q7Le//+9FHh9vz377mxf58vnstx/env32N3dykP9+z3lykQd5khf5ciPgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXZ7/9yUlv0pv0Jr1Jb9Kb9Ca9SW/SW/QWvUVv0Vv0Fr1Fb9F7eLVOvnOGs9/+5kbu5CDfOcPZb3/zIE/yIu+Pw2e//c3tXi+zk7mO4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4RXCa8SXp399jcnuciDPMmLTG+jt9Hb6G30NnobvY3eRm+jl/lVMr9K5ldnv/38lpL5VTK/Ovvth7dnv/3Nk7zI++Pt2W9/cyN38t/vOU9OcpEHeZIvNxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8Snh19tvfTO+gd9A76B30DnoHvYPeQe+gd9A76Z30TnonvZPeSe+k9/BqnXznwGe//cnrR27kTr5z4LPf/uYiD/Ikr4/DZ7/9yed+8Fwvu5G5juBVwquEVwmvEl4lvEp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4V8/aCVwWvinl7MW8v5u3FvL2Ytxfz9mLeXszbi3l7MW8v5u3F/KqYXxXzq2J+Vcyvzn77+S0V86tifnX22w9vz377mwd5ktfH27Pf/uT6kRv57/ecJwc5yUUe5MuNglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXp399jfTO+ld9DJvL+btxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mLcX8/Zi3l7M289++2Hy2W8/jD377W++fD777W9u5Puc7uy3vznJRR7k+XH47Le/eX/Xy9lvf3Mj3+towKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqMG8f8GrAq8G8fTBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/M2wfzq8H8ajC/GsyvBvOrs9/+/JaYXw3mV2e//fD27Le/uciDPD/env32N18+n/32N//9nvPkTg5ykot8uTHg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14Nng8Ong8Ong8Ong9O5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3n722w+Tz377YezZb3/zIl8+n/32N989irPf/uYgJ7nId4/i7Le/+e5RnP32J8ePfK+jCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrybx9wqsJrybz9sm8fTJvn8zbJ/P2ybx9Mm+fzNsn8/bJvH0yb5/Mrybzq8n8ajK/msyvzn7781s6+wznWvjj1Zv/fs/nd37uB5+c5P97//+D5eRvn3Cx377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1+r0dvobfQ2ehu9jd5Gb6e303v9V2td/9Va13+11vVfrWe//cl/+3V18iLvm6//aq3rv1rsty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb/8/01v0Fr1F76B30DvoHfQOege9g95B76B30DvpnfROeie9k95J76R30jvpnfQues++6Dz5229f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tvXs9/+5MtJ9tsX++2L/fa1r/9qsd++2G9f7Lcv9tvXvv6rxX77evbbn/ztIS/229ez3/7kex2x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fa1N72b39V533mfvN+8z377mxu5v4zdz377k5Nc5L/edfIkL/K+uf3I3/W7f5dX+3d5tX+XV/t3ebV/l1f7d3m1f5dX+3d5tX+XV/vX6e30dno7vZ3eTm+nt9Pb6Q16g96gN+gNeoPeoDfoDXqD3qQ36U16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u+m97zvvdd933uu+77zXfd95r/u+8173fee97vvOe933nfe67zvvdd933utHb6P3vj+4z37733tb++y3v/nvPYJxcpEHeZL/fs958r75j1dvbuROvtfvglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVKnqL3qK36C16i96it+gd9A56D6/WyUG+nDz77W8e5Ele5MvJs9/+5kbu5CDnx9Kz3/7mca+F4xd98iJzHcGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNqN3kZvo7fR2+ht9DZ6G72N3k5vp7fT2+nt9HZ6O739/q729cnss9/+5PP+4JMbuX+MPfvtb05ykf9+z3nyJC/y5fPZb3/zvX43vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa/2oHfQO+gd9A56B72D3kHvpHfSO+md9E56J72T3knvpHfSe3i1Tm4fS/f1yeyz3/7mJBd5fCzd1yezz377my+fz377m+/fsWe//c1xr4vjF31ykbmO4NWGV/vjVf/9Pl79y43cyUFOcpEHeZIXmd5Gb6O30dvobfQ2ehu9jd5Gb6O309vp7fR2eju9nd5Ob6e309vpDXqD3qA36A16g96gN+gNeoPepDfpTXqT3nx/V/8yvUnv55P5lxd531w/cnt4+y93cpCT/Pd7zpMHeZIXed/88epfbuRODnKSizzIk7zI++ZJ76R30jvpnfROeie9k95J76R30bvoXfQuehe9i95F76J30bvo3fRueje9m95N76Z307vp3fQeXq1/uX0+mX+5kTs5yEmuh7H/8iBP8iLvm49P5ndyI/fvejn77W9O8r2OGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavrr/9X6YXXl1/+79Mb9Jb9Ba9RW/RW/QWvUVv0Vv0Fr2D3kHvoHfwuxr0Dno/n8y/PMmLfPncPp/Mv9zInRzkv99znlzkQZ7kRb7caPCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCq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Se+kd9I76Z30LnoXvYveRe+id9G76F38rq5Ppp399ief9wef3Mj9Y+zZb39zkov893s+1+D1ybSz3/7my+ez3/7me/0ueLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC16tTm+nt9Pb6e30dno7vZ3eoDfoDXqD3qA36A16g96gN+g9vFont4+l6/pk2uNvf3KSizw+lq7rk2lnv/3Nl89nv/3N9+/Ys9/+5viui7Pf/uYi3+towasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFr66//V+md9G76d30bno3vZveTe+md9O76b3vO7frb/+XG7mTg3x/V9ff/i8P8vx4e/bb33z5fPbb39w+3p799jcHOcl/v+c8eZAneZEvnze82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNr3bSm/QmvUlv0pv0Jr1Jb9Kb9Ba9RW/RW/QWvUVv0Vv0Fr2HV39M3tcn0/b1ybTH3/7kICe5Psbu65NpZ7/9zYt8+Xz22w+Hz377m/u9XmaQuY7g1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teIW/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9n722/9+Sx1/e8ff3n/XJ9PPfvubF3nffH0y/ey3v7mTg/z3e86TizzIk7zIHzf67/Kq/y6v+u/yqv8ur/rv8qr/Lq/67/Kq/y6v+u/yqv+S3qK36C16i96it+gteoveorfoHfQOege9g95B76B30DvoHfQOeie9k95J76R30jvpnfROeg+v1sn7ZWz/XZ9M/33fm/iXOznI+TK2/65Ppv++7038y5O8yPvlcD/77W/+5nX97Le/metocx1trqPN9bu5fjfXL7xq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwav8Ld3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3s/++3nt4S/veNv72e//fD27Le/eZIXeX+8Pfvtb27kTv77PefJSS7yIE/y5UaDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjVJr2T3kXvonfRu+hd9C56F72L3kXvonfTu+nd9G56N72b3k3v4dU6+ZsD98ff/pf7/d5E7/d7E73f7030s99+GHv2299c5EGe5PVx+Oy3P/ncD/aTG7mT73XU4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXiFv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42/vZb39+S4PeQe/xi9bJRR7kSV4fb89++5Pv9yZ6v9+b6Ge//TD27Le/OclFHuTLjQ6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8Kpveje99/lgx9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3t//O3r5O85XX/87U++fI77vYke93sT/ey3H8ae/fY3J7nIgzw/Dp/99jfv73o5++1vbuR7HQW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4BX+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv72e//fktLXoXvevbo+hnv/3NRR7kb4+in/32N18+x/3eRD/77YexZ7/9zUFOcpHhBrwKeBXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CobvY3eRm+jt9Pb6e30dno7vZ3eTm+nt9Pb6Q16g96gN+gNeg+v1snfHkV//O1PXuTL57zfm+hnv/0w9uy3vznISS7y+Dh89tvf/O1R9LPf/uT7vYme8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa/wt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/ez/77ee3dPbb/xy5/ey3v/nv97xPDnKS6/Xl9ro+mV7XJ9Pr+mR6XT9Dr+tn6HX9DL2un6HX9TP0un6GXtfP0KvR2+ht9DZ6O72d3k5vp7fT2+nt9HZ6O72d3qA36A16g96gN+gNeoPeoDfoTXqT3rPfHicHOclFHuS/fe86eZH3zWe//cl/e+Z58rdn3tlv7+y3d/bbO/vtnf32zn57Z7+9s9/e2W/v7Ld39ts7++2d/fbOfntnv72z395r0DvpnfROeie9k95J76R30jvpnfQuehe9i95F76J30bvoXfQuehe9m95N76Z307vp3fRueje9m977vnMf933nPu77g/3st/+9t9XPfvub/zj5O7nIgzzJf73r5H3zeR/nyY3cyff6HfBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8Gklv0pv0Jr1Jb9Kb9Ca9RW/Re3jVTw7y5eTZb3/zIE/yIl9Onv32NzdyJwc5P5ae/fY3j3stHF49eZG5juDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFf42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42/vjb58nr4+xj7/95PP+4JMbuX+Mffbbn5zkIv/1rpMneZEvnx9/+5Pv9Tvh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDWL3qK36C16i96it+gtege9g95B76B30DvoHfQOege9g97Dq35y+1g6r0+mn/32Nye5yONj6bw+mX722998+Xz22998/449++1vjntdHF49uchcR/BqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwasFrxa8WvBqwasFrxa8WvBqwSv87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87f3xt8+T6Q16r0+mP/72J18+P/72J7ePt89++5ODnOS/3nXyIE/yIl8+L3i14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwterUnvpHfSO+md9E56J72T3knvpHfRu+hd9C56F72L3kXvonfRe3j1x+R1fTJ9XZ9MP/vtbw5ykutj7Lo+mX7229+8yJfPZ7/9cPjst7+5f9fL2W9/c5LvdbTh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teIW/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jb++NvP78l5lf42/u+Ppn++NufvMiXz/v6ZPqz3/7kTg7yX+86uciDPMmLfLmx4dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxte7UXvpnfTu+nd9G56N72b3k3vpvf6ZAJ/e+BvD/ztgb898LcH/vbA3x742+Pst/8xOX7XJxO/65OJ3/3eRPzu9ybid783Eb/rk4nf9cnE735vIn73exPxu9+biLPf/sfhOPvtb/7mdXH2298c5O86it/lVfwur+J3eRW/y6v4XV7F7/IqfpdX8bu8it/lVfyC3qA36A16g96gN+lNepPepDfpTXqT3qQ36U16i96it+gteoveorfoLXqL3qJ30DvoHfQOege9g95B76B30DvonfROeie/q0nvpPfcD+6TB3mSF3m/vI1nv/3JjdzJf73nelxJLvIgT/LHjfgtuLHhxoYbG25suLHhxoYbG25suLHphVcNXjV41eBVg1cNXjV41eBVg1ftPh8M/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3Ofvth8tlvP4w9++1Pvt+biHa/NxHtfm8izn77YezZb39zkQd5ktfH4bPf/uTDq3lyI3fyvY4avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq/wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHo+//fyWNr2b3nM/uE8u8iBP8vp4++y3/+V+vzcR/X5vIh5/+zo5yEku8iBfbnR41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1e909vp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b0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PR9/+/ktbXo3vdcnk4+//cmXz4+//cnt4+2z3/7kICf5r3edPMiTvMiXzxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVzPoDXqD3qA36A16g96gN+gNepPepDfpTXqT3qQ36U16k97Dqz8mz+uTyXl9Mnn2298c5CTXx9h5fTJ59tvfvMiXz2e//XD47Le/uX/Xy9lvf3OS73U04dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXiFvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9nz87fNkeplfreuTycff/uRFvnxe1yeTz377kzs5yH+96+QiD/IkL/LlxoJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLWS3qK36C16i96it+gteoveorfoHfQOege9g95B76CXeTv+9jz77YfJ6/pkcl2fTK77vYlc93sTue73JnJdn0yu65PJdb83ket+byLX/d5Env32w+Gz3/7mO687++1v5jqCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWGVxtebXi14dWGV/jbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m/Px98+T6aX+dXjb98nD/IkL/L+ePvstz+5kTv5r3ednOQiD/IkX25seLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXm+eD+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3ue/fbD5LPffhh79tuffL83kft+byL3/d5Env32w9iz3/7mIg/yJK+Pw2e//S/X2W//u17qd78/WL/7vYn6XV7V7/KqfpdX9bu8qt/lVf0ur+p3eVW/y6v6XV7V7/Kqfo3eRm+jt9Hb6G30Nno7vZ3eTm+nt9Pb6e30dno7vZ3eoDfoDXqD3qA36A16g96gN+hNepPepDfpTXqT3qQ36U16k96it/hdFb1F77kf3CcXeZAneb28rWe//eT7vYn63e9N1ONvXycHOclFHuSPG/W7vKrf5VX9Lq/qd3lVv8ur+l1e1e/yqn6XV/W7vKrfpHfSO+ld9C56F72L3kXvonfRu+hd9C56N72b3k3vpnfTu+nd9G56N7133l742wt/e+FvL/zthb+98LfX2W//Y3Kd/fY/xtbZb3/zvvl+b6La/d5Enf32P8bW2W9/c5KLPMjz4/DZb3/z/q6Xs9/+5ka+11GDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4BX+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjb6/G3n9/SpHfSO789inr87U8u8iB/exT17Lc/+fK53e9N1ONvP9fj6uQgJ7nIlxsNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXnV41eFVh1cdXnV41eFVv88HC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W+vs99+mHz22w9jz377mxf58rnf703U2W8/jD377W8OcpKLPD4On/32N397FHX22598vzdRHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV7hby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vR5/+/kt/ePVceTW3377l/vrxa2//fYvJ7leX27165Opfn0y1a9Ppvr1M1RcP0PF9TNUXD9DxfUzVFw/Q8X1M1RcP0PF9TNUXD9DxY/eRm+jt9Hb6G30NnobvY3eRm+jt9Pb6e30dno7vZ3eTm+nt9Pb6Q16g9743sOtZ7/9yUku8iB/7+HW2W9/8775vI/z5L9979/J3555sd9e7LcX++3Ffnux317stxf77cV+e7HfXuy3F/vtxX57sd9e7LcX++3FfntF0TvoHfQOege9g95B76B30DvoHfROeie9k95J76R30jvpnfROeie9i95F76J30bvoXfQuehe9i95F76b3vj9YZ7/9772tOvvtb/57j2CcXORBnuS/3/O5Rv54dfLZb39zI3fyvX4TXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CqD3qA36A16g96gN+gNepPepPfwap0c5MvJx9/+5EGe5EW+nDz77W9u5E4Ocn4sPfvtbx7ftXD229+8yPc6SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa/wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wt9fZbz+/pbo+mTr77U8+7w8+uZH7x9iz3/7mJBf57/ecJ0/yIl8+n/32N9/rt+BVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFryrpTXqT3qQ36U16k96kt+gteoveorfoLXqL3qK36C16D6/Wye1jaV2fTD3+9icnucjjY2ldn8z/eZEvn89++5vv37Fnv/3Nca+L4xd9cpG5juBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbzC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC315nv/38lvC3F/72GtcnU2e//c2Xz2e//c3t4+3Zb39zkJP893vOkwd5khf58nnAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GoMege9g95B76B30DvoHfQOege9k95J76R30jvpnfROeie9k97Dqz8mj+uTqXF9MvX4258c5CTXx9hxfTJ19tvfvMiXz2e//XD47Le/ud/rZQeZ6wheDXg14NWAVwNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNe4W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73Ofvv5LeFvL/ztNa9Pps5++5sX+fJ5Xp9Mnf32N3dykP9+z3lykQd5khf5cmPCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJryak95F76J30bvoXfQuehe9i95F76J307vp3fRueje9m17m7fjb6/G3r5P3x9h1fTK17vcmat3vTdS635uodX0yta5Pptb93kSt+72JWvd7E3X22w+Hz377m++87uy3vznI9zpa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrzC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e5399ue3xPwKf3ud/fbD27Pf/uZJXuT98fbst7+5kTv57/ecJye5yIM8yZcbC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1eL5IP72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9ej799nXznwI+//eT7vYna93sTte/3Jurstx/Gnv32Nxd5kCd5fRw+++1PPveD/eRG7uR7HW14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXuFvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+9zn7781tifoW/vc5+++Ht2W9/8yBP8vp4e/bbn3y/N1H7fm+izn77YezZb39zkos8yHADXu3Lq/G7vBq/y6vxu7wav8ur8bu8Gr/Lq/G7vBq/y6vxu7wavx+9jd5Gb6O30dvobfQ2ehu9jd5Gb6e309vp7fR2eju9nd5Ob6e30xv0Br1Bb9Ab9Aa9h1fr5O853Xj87U/eN9/vTYzf/d7EOPvtf4wdZ7/9zUku8iDPl8Pj7Le/eb/Xyzj77W9u5O86Gr/Lq/G7vBq/y6vxu7wav8ur8bu8Gr/Lq/G7vBq/y6vxG/QOege9g95B76B30DvonfROeie9k95J76R30jvpnfROehe9i95F76J30bvoXfQuehe9i95N76Z307vp3fRueje9m95N751fjbPffn5L+NsH/vZx9tv/eDvOfvubizzI3x7FOPvtb9433+9NjLPf/sfYcfbb3xzk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8w7WmfPg07eftb19e9G3Vw7WebDOg3Ue1xuJrxJf0bfX07c/3GHW+fbt9fTtD2+Ydb59e52+/eWAWefFOi8+z2vCC2adF+u8+Xk3P+9mnTef59tfVXIefPr2cy0267xZ583nuT5wg+8+5+nbH2ZuMbfuPuf07S9v+O5zTt/+coMDvvuc07e/POAJ33Xu9/vO1fFVx1cdX/X7fZzq9/s41e/3carfXrQ6vur4quOrjq9O336uS7/fx6nTt7+ccIcHfPc5T9/+MHN5fnX69rP+HV+dvv3l66uOrzq+On37y9dXHV91fPX07Q+zzviq46uOr07f/jLrjK86vur4quMr+vbq+KpzHnz69nNd8FXHVx1fdXz19O2H593nnL79ZeZO5uKr07e/POHrq46vnr798OI+wlcdXz19+8PcR/iq46uOr07f/jL3Eb6iby/69ur4quOrjq86z68658Gnbz/XBV91fNXx1dO3P8x9VPf5xunbX2ZuMRdfPX37l5++/eHrq4Gvnr794Q5fXw18NdhfDfZXA18NfDXw1WB/NdhfDXxF31707TXw1cBXA18N9leD/dXTt/fDd50Hvhr4arC/GuyvTt9+rsXp2x9mfzWSufjq6dsf7vD11cBXT9/+8Iavrwa+evr2hwNmnfHVwFenb395wawzvqJvr4GvBr4a+Grw/GpwHnz69nNd8NXAVwNfPX37ww2+v/dP3/4ycydz5+97bXX69pc3/D0fnTXkPHj69nMWO337ywl3eMD3XHb69pc3XJfP+2TOtdgN/n2vrU7f/nKHv9f3rM+e8D2Xnb795XsuG/d9MjXu+2Rq3PfJ1Ljvk6nBeXBwHhycBwfnwVF4437fueb9vnPN+33nmvf9DDXv951r3u8717zfd655v+9ck/3VZH81b39V8/YMNW/PUJP91WR/NfHVxFcTXz19ez98P8/zft+55v2+8z+4wQEz976foejb/8ETXvCGWedknZN1vu9nKPr2om+vmaxzss7JOvP8ir696NuLvr3o22t2ft7OOnMefPr2s7a3by/69pqddR6s82Cdx/XGxFcTX9G319O3P7xg1vn27TXv+2Rq3vczFH170bfXvO+TqXnfz1D07UXfXvTtNe/7GWre9zMUfXvRtxd9e9G3F3170bfXvP1VTc6DT99+rsVmnTfrvPk83/cz1LzvZ6inbz/XYk+Y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Rd8e9O1B3x707UHfHvTtQd8ek+ftE1/Rtwd9e9C3B317TM6Dk+ftk/3V5Hn7xFeT8+DTtz98fTXx1eQ8+PTth/HVxFeT8+Dp219mnfHVxFeT8+DkeTt9e9C3B3170LfHxFcTX03Og5Pn7fN+3zno22Piq4mvJufByfP2yXlwjg4zdzD39lcxb38VT99++Pjq/PPzenLe/irm7a9i3v4qTt/+8q+/inn7q5i3v4rTtz98+6s4ffvL3EeL+whf0bfHxFcTX018NTkPzs313VzffZ+rTHw18dXkPDg399HmPsJXE1/Rtwd9e9C3x8RX9O1B3x707THxFX170LcHfXvQt8fCV/TtQd8e9O1B3x707UHfHvTtsfDVYn9F3x707UHfHvTtsfAVfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXvQtwd9e9C3B3170LcHfXtsfLU5D26et298tfHV5jy4ed6+8dXGV5vz4OZ5+8ZXG19tfLU5D9K3x8ZX9O1B3x707UHfHvTtQd8e9O2xed6+8RV9e9C3B3170LfH5jy4ed6+2V9tnrdvfLU5Dz59+8PXVxtfbc6DT9/+8PXVxleb8+Dp21++61z4qvBVcR4snrfTtwd9e9C3B317FL4qfFWcB4vn7XW/7xz07VH4qvBVcR4snrcX58Gnb3+YucFc+quiv3r69oe/c59/fvPvvP1V0V8V/dXp21++/VXRXxX91enbX7791enbX7730dO3P8w646vCV4WvCl8V58Givzp9+8v3uUrhq8JXxXmw6K+evv1h5uIr+vagbw/69ih8Rd8e9O1B3x6Fr+jbg7496NuDvj0KX9G3B3170LcHfXvQtwd9e9C3R+GrYn9F3x707UHfHvTtUfiKvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj0bvmr3PJjtPm/Phq8avmr3PJjtPm/Phq8avmr3PJjtPm/Phq8avmr4qt3zYNK3Z8NX9O1J35707UnfnvTtSd+e9O3Z7vP2bPiKvj3p25O+Penbs93zYLb7vD3bYO5gLr5q9zyYT99+GF81fNXueTCfvv3h66uGr9o9D+bp219mnfFVw1dtcR8t7iN8Rd+e9O1J354NXzV81RbXd3N97/edk749G75q+Kpt7qPNfXTPg/n07Q8zt5h7+6tst7/Kp29/+Dv3+eevJ9vtr7Ld/irb7a/y9O2H4/ZXGbe/yrj9VZ6+/eVff5Wnb3/53kdP3/7wXWf69gx8Ffgq8FXc82DG7a8y7vuQ8/Tt5xoFvgp8Ffc8mHH7q3z69oeZi6/o25O+PenbM/AVfXvStyd9ewa+om9P+vakb0/69gx8Rd+e9O1J35707UnfnvTtSd+ega+C/RV9e9K3J3170rdn4Cv69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69kx8lZwHs7iP8FXiq+Q8mMV9hK8SXyXnwX6ft2fHVx1fdXzVOQ/Styfvb0/69qRvT/r2pG9P+vakb0/69uz3eXt2fEXfnvTtSd+e9O3ZOQ/2+7w9O/urHszFV53z4NO3P3x91fFV5zz49O0PX191fNU5D56+/WXWGV91fNU5D/b7vD3p25O+Penbk749O77q+KpzHuyd63u/75z07dnxVcdXnfNgv8/bs3MefPr2h5k7mHv7q+y3v8qnb3/4O/f88/N6st/+Kvvtr7Lf/ipP3/7yr7/Kfvur7Le/ytO3v/w3t9fhf8xdsf79n//p//lP//Yv/+k//+t//b//6X/7//7x//6f/+u//Zf/+S///b89/+///H//x/uf/Od/+5d//dd/+b/+4//4t//+X/7r//G//u2//sd//e//5e8/+6fP3//5x3/5/733fx79P/zzP/3dRf/7P87z//yPc/l/+Pd///f/8O//Pw==", + "debug_symbols": "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pCIN6cj6hLfnXo+cz1W951633CzZsipAYYnCEoUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligs2XOvR+K2cFu4LdwWbgu3VW577vXIgRSkIg3pyEAmciLrKtlzr/u/Dtxultzs23OvRxrSkXVHtedej5zI4uSee72BZzKQglSkIau6DZYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWLLnXo/EzXAz3Aw3x81xc9wcN8fNcXPcHDfHzXEL3AK3wC1w2yyxW/oDvD33emQiJ7I4uedeb+DtudcjBalIQ/pDxD33emTWtZ4TSQXAEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJY4LHFY4rDEYYnDEoclDkscljgs2XOvW8IShyV77vVI3AZuA7eB28Bt4DZwE9wEN8FNcBPcBDfBTXCTukqcfonTL9lzrzf79tzrkYo0pD/s23OvRyZyIm9O3hZ2IQdSkIqs6nZY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGHJnns9ErfALXAL3AK3xC1xS9wSt8QtcUvcErfELXGbuE3cJm6bJXZLe4C3516PDGQiJ3I9wNtzr0cOpCAVaQ8R99zrkVHX+kokFQBLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAk6L0GLAlYEvReg95r0HsNeq9B7zXovQa916D3GvReg95r0HsNeq9B7zXolwT9kqBfsude70sj6JcE/ZI993qzb8+9HilIRdrDvj33emQgE3lzclsUJ/fc65EDKciq7oAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApbsudcjcZu4TdwmbvReg95r0HsNeq9B7zXovQa916D3GvReg95r0HsNeq9J7zXpve651xuOe+71Bt6eez3SkYFMZHUM99zrluNCDqQg9SHinns90p9rfc+9HpnIqoCEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLEl6rwlLEpYkvdek95r0XpPea9J7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S8tvl5bfLi2/XVp+u7T8djn57bE1feCT3350Nj2bhs9BPoOc/PajpWlt2pquuS85+e1H11yBnPn2o1sdNV61+XaJxqtovIrGq2i8isaraLyKxqtovIrGq2i8isaraLyKxqtovIrGq2i8isaraLyKxquW3y4tv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afrsk38eRlt8uLb9dTn67bi1Na9PWdM19yclvPzqbnk1zTnfy248eTUvT2jTcyMarbLzKxqtsvMrGq2y8ysarbLzKxqtsvMrGq2y8ysarbLzKxqtsvMrGq2y8ysarbOeDLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afruc/PbYmnO6k99+dDSdTc+mOac7+e1Hj6alaW265r7k5LcfzXzOmW8/utVR41Wbb5dsvMrGq2y8ysarbLzKxqtsvMrGq2y8mo1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/Gq5bdLy2+Xlt8uLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afru0/HZp+e3S8tul5bdLy2+Xlt8uk+/jSMtvl5bfLie/XbceTUvT2jRzFCe//ehoOptmjuLkt2/N703I5PcmZPJ7EzIbr2bj1Wy8mo1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs50Ptvx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afru0/HZp+e1y8ttja+YoTn770d50NJ1NM0dx8ttvvfi9CVn83oQsfm9CTn773NqaZo7izLcfnU1TR22+XVbj1Wq8Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1XLb9dWn67tPx2afnt0vLbpeW3S8tvl5bfLi2/XVp+u7T8dmn57dLy26Xlt0vLb5eW3y4tv11afru0/HZp+e3S8tul5bdLy2+Xlt8uLb9dWn67tPx2Wd6uK2cu9+S3H81c7slvP3o0zVzunm+32PrD187/xpuOprPp2fRC37x69Ghamtamm2/yvrD4vrMsvu8si+87y+L36GXxfWdZfN9ZFt93ltV4tRqvVuPVarxajVer8Wo1Xq3Gq9V4tdr5YMtvl5bfLi2/XVp+u7T8dmn57dLy27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dr34PXq9+D16vfg9er34vrNefN9ZL36PXi9+j14vfo9eL77vrBe/R68XvNILXukFr/SCV3rBK73glV7wSi94pRe80gte6WXN15qvNV9rvtZ8rfla87Xm683Xm683X2++3ny9+Xrz9ebrzdebbzTfaL7RfKP5RvON5hvNN5pvNN9ovtl8s/lm883mm803m28232y+2Xyz+c7mS16fXvzehF6cD+rF703oxe9N6MXvTejF+aBe/N6EXvzehF783oRenA/qxfmgXqvV72r1u1r9rla/q9XvavXbeDUar0bj1Wi8avnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfroPfm9CT3340nBz83oQOzgd1cD6og/NBHfzehA5+b0IH54M6OB/UwfmgDn5vQs98+9H1OUcHvzehg/NBbfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvl2PfPt+1paNYesLb9dW367nvn2o2sOWVt+u7b8dj3z7UfXnJu2/HZt+e3a8ttVOB/Ult+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt+e3a8tu15bdry2/Xlt+uLb9dW367tvx2bfnt2vLbteW3a8tv15bfri2/XVt+u7b8dm357dry21Ws+ZLfri2/XVt+u7b8dm357dry27Xlt2vLb9eW364tv11bfru2/HZt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wN8e+NsDf3vgbw/87YG/PfC3B/722Myv2G+PZ7/977f07LfPkxv5r3edHOQk//Xuk//2kMfJ3x5ynP32N++b+4/cyJ0c5CQXeZDpve8PxrPffnL8yI18/13Y9/3BePbbn1zkyyv87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87bGZt2/m7Zt5+2bevpm3b+btm/nVZn61mV9t5leb+dVmfrWZX+37/mDs+/5g7Pv+YOz7/mCc/fYn3/cHY9/3B2Pf9wdj3/cHY9/3BwN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e/46vZ3eTm+nN+gNeoPeoDe+5875u993zt99PpjPfnuevMj75vt8MJ/99n5yJwc5yUX+rt/E35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib89f4PeSe+kd9I76Z30TnonvZPeSe+kd9G76F30LnoXvev7+zl/9/vO+bvfd87f/b5z/u7zwfzd54P5u88H83e/75y/+33n/N3ng/m7zwfzd58P5u9+3zl/9/vO+bs+mWz3+87Z7vPBxN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NuzwasGrxq8avCqwasGr1rQG/QGvUFv0Bv0Jr1Jb9Kb9Ca9SW/Sm/QmvUlv8buqbw85n/32Jwc5yd8ecj777U+e5EX+9tzy2W9/ciN3cpDv9Yu/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3s2eNXgVYNXDV41eNXgVVv0LnoXvYveRe+md9O76d30bno3vZveTe+m987bs995e/Y7b89+5+159tsPe89++2Hp2W9/8yBP8iJ/e2559tvf3MidHOTv79h89tuf/L0nko+//cmLfK8j/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+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38zbN/P2zbx9M2/fzNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zbx9M7/azK8286vN/Gozv9rMrzbzq33fH8x93x/Mfd8fzH3fH8yz3/7mu7+x7/uDue/7g7nv+4O57/uDib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bfnhlcbXm14teHVhlcbXm3m7Zt5+2bevpm3b+btm3n7Zt6+mbdv5u2beftm3r6Zt2/m7Zt5+2Z+tZlfbeZXm/nVZn61mV9t5leb+dVmfsV+e7Lfnvt+Hyef/fY4+f79vO/3UvPZb39yJwf5/v287/dS89lvf/IkL/J3/Rb+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O316/R2eju9nd5Ob6e309vpDXqD3qA36A16g96gN+iN7+/nOvvtT77fS62z3/7mTg5ykj9O1rPf/uRJXuR9c31/P9ez3/7k7++cevztT07ydx0V/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vb6LXoXvYveRe+id9G76F30Lno3vZveTe+md9O76d30bno3vXd+Ve3Or6rd+VWx317t+q+q3e+lVrvfS61nv/3Jk/ztIVe730utZ7/9yY387blVu99LrXa/l1rPfvuTB/lev/jbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wt1eDVw1eNXjV4FWDVw1etaA36E16k96kN+lNepPepDfpTXqT3qK36C16i96it+it7z2Ravd7qdXu91Kr3e+l1tlvf3Mjf3tu1e73Uqvd76XWs9/+5EH+/o6tZ7/9yd97IvX425/cyFxH8Ap/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC314NXjV41eBVh1cdXnV41e+8vfqdt1e/8/bqd95e/c7bq995e/UfvY3eRm+jt9Hb6G30NnobvY3eRu/1XxX77cV+e/X7vdTq93up9ey3P3mQvz3k6vd95+r3fefq933n6vd7qdXv+87V7/vO1e/7ztXv88HC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+9Orzq8KrDqw6vOrzq8KoXvUVv0Vv0DnoHvYPeQe+gd9A76B30DnoHvZPeSe+kd9I76Z3fe3zV7/vO1e/7ztXv+87V7/vO1e/zwer3fefq933n6vd953r2259c5PFx+Nlvf/L3nkg9/vaTN9cRvMLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv70CXuFvL/ztFfAq4FXAq+j0wquAV9Hp7fR2eju9nd5Ob6c36A16g96gN+gNeoPeoDfovf6rYr+92G+vuN9LrbjfS61nv/3JRf72kCvu91Lr2W9/8uVz3O+lVtzvpVbc76XWs9/+5CRfbuBvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vYKeBXwKuBVwKuAVwGvYtI76Z30TnonvYveRe+id9G76F30LnoXvYveRe+md9O76d30nnn7OPnbc6u430utuN9LrbPf/ubL57zfS62830utvN9LrWe//clJ/t7jq2e//cnfvK4ef/uT73WEv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W+vhFf42wt/eyW8SniV8CqDXniV8CqT3qQ36U16k96kN+lNeoveorfoLXqLXuZXyfyK/fbK4nfF/Ir99nr22+PkTg5ykr895Hr22588yYv87bnVs9/+5Ebu5CBfbuBvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vZKeJXwKuFVwquEVwmvctO76d30bno3vczbi3l7MW8v5u3FvL2Ytxfz9mLeXszbi3l7MW8v5u3FvL2Yt5/99sPks99+GHv22988yJO8yHcOfPbb39zInRzk7z2+evbbn/y9J1KPv/3Ji3yvo4JX+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vQpe4W8v/O1V8KrgVcGrYt5e8KrgVTFvL+btxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mF8V86tiflXMr9hvr2e//fyWmF+x317Pfnuc3MidHORvn6Hqfi+16n4vtep+L7Xq7jNU3e+lVt3vpVbd76VW3e+l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Te+md9O76b3vO+9133fe677vvNd933mv+77zXvd9573u+8573fed97rvO+9133fe60dvo/e+P7jPfvvfe1v77Le/+e89gnFykQd5kv9+z3nyvvmPV29u5E6+1++CVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NUqeoveorfoLXqL3qK36B30DnoPr9bJQb6cPPvtbx7kSV7ky8mz3/7mRu7kIOfH0rPf/uZxr4XjF33yInMdwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqw6sNrza82vBqw6sNrza82vBqw6sNrza82o3eRm+jt9Hb6G30NnobvY3eTm+nt9Pb6e30dno7vf3+rvb1yeyz3/7k8/7gkxu5f4w9++1vTnKR/37PefIkL/Ll89lvf/O9fje82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNr/agd9A76B30DnoHvYPeQe+kd9I76Z30TnonvZPeSe+kd9J7eLVObh9L9/XJ7LPf/uYkF3l8LN3XJ7PPfvubL5/Pfvub79+xZ7/9zXGvi+MXfXKRuY7g1YZX++NV//0+Xv3LjdzJQU5ykQd5kheZ3kZvo7fR2+ht9DZ6G72N3kZvo7fT2+nt9HZ6O72d3k5vp7fT2+kNeoPeoDfoDXqD3qA36A16g96kN+lNepPefH9X/zK9Se/nk/mXF3nfXD9ye3j7L3dykJP893vOkwd5khd53/zx6l9u5E4OcpKLPMiTvMj75knvpHfSO+md9E56J72T3knvpHfRu+hd9C56F72L3kXvonfRu+jd9G56N72b3k3vpnfTu+nd9B5erX+5fT6Zf7mROznISa6Hsf/yIE/yIu+bj0/md3Ij9+96Ofvtb07yvY4avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq+uv/1fphdeXX/7v0xv0lv0Fr1Fb9Fb9Ba9RW/RW/QWvYPeQe+gd/C7GvQOej+fzL88yYt8+dw+n8y/3MidHOS/33OeXORBnuRFvtxo8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwav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ez/77ee3hL+942/vZ7/98Pbst795khd5f7w9++1vbuRO/vs958lJLvIgT/LlRoNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNUmvZPeRe+id9G76F30LnoXvYveRe+id9O76d30bno3vZveTe/h1Tr5mwP3x9/+l/v93kTv93sTvd/vTfSz334Ye/bb31zkQZ7k9XH47Lc/+dwP9pMbuZPvddThVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eIW/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jb+9lvf35Lg95B7/GL1slFHuRJXh9vz377k+/3Jnq/35voZ7/9MPbst785yUUe5MuNDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqm96N733+WDH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e3/87evk7zldf/ztT758jvu9iR73exP97Lcfxp799jcnuciDPD8On/32N+/vejn77W9u5HsdBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgFf72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/vZ7/9+S0tehe969uj6Ge//c1FHuRvj6Kf/fY3Xz7H/d5EP/vth7Fnv/3NQU5ykeEGvAp4FfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKhu9jd5Gb6O309vp7fR2eju9nd5Ob6e309vpDXqD3qA36A16D6/Wyd8eRX/87U9e5MvnvN+b6Ge//TD27Le/OchJLvL4OHz229/87VH0s9/+5Pu9iZ7wKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJr/C3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97P/vt57d09tv/HLn97Le/+e/3vE8OcpLr9eX2uj6ZXtcn0+v6ZHpdP0Ov62fodf0Mva6fodf1M/S6foZe18/Qq9Hb6G30Nno7vZ3eTm+nt9Pb6e30dno7vZ3eoDfoDXqD3qA36A16g96gN+hNepPes98eJwc5yUUe5L997zp5kffNZ7/9yX975nnyt2fe2W/v7Ld39ts7++2d/fbOfntnv72z397Zb+/st3f22zv77Z399s5+e2e/vbPf3mvQO+md9E56J72T3knvpHfSO+md9C56F72L3kXvonfRu+hd9C56F72b3k3vpnfTu+nd9G56N72b3vu+cx/3fec+7vuD/ey3/7231c9++5v/OPk7uciDPMl/vevkffN5H+fJjdzJ9/od8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwaSW/Sm/QmvUlv0pv0Jr1Fb9F7eNVPDvLl5Nlvf/MgT/IiX06e/fY3N3InBzk/lp799jePey0cXj15kbmO4NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAV/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jb++Nvnyevj7GPv/3k8/7gkxu5f4x99tufnOQi//Wukyd5kS+fH3/7k+/1O+HVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NYveorfoLXqL3qK36C16B72D3kHvoHfQO+gd9A56B72D3sOrfnL7WDqvT6af/fY3J7nI42PpvD6Zfvbb33z5fPbb33z/jj377W+Oe10cXj25yFxH8GrCqwmvJrya8GrCqwmvJrya8GrCqwmvJrya8GrBqwWvFrxa8GrBqwWvFrxa8GrBK/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/ztHX97x9/e8bd3/O0df3vH397xt3f87R1/e8ff3vG3d/zt/fG3z5PpDXqvT6Y//vYnXz4//vYnt4+3z377k4Oc5L/edfIgT/IiXz4veLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC16tSe+kd9I76Z30TnonvZPeSe+kd9G76F30LnoXvYveRe+id9F7ePXH5HV9Mn1dn0w/++1vDnKS62Psuj6Zfvbb37zIl89nv/1w+Oy3v7l/18vZb39zku91tOHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14hb+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Nv7428/vyXmV/jb+74+mf7425+8yJfP+/pk+rPf/uRODvJf7zq5yIM8yYt8ubHh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG17tRe+md9O76d30bno3vZveTe+m9/pkAn974G8P/O2Bvz3wtwf+9sDfHvjb4+y3/zE5ftcnE7/rk4nf/d5E/O73JuJ3vzcRv+uTid/1ycTvfm8ifvd7E/G735uIs9/+x+E4++1v/uZ1cfbb3xzk7zqK3+VV/C6v4nd5Fb/Lq/hdXsXv8ip+l1fxu7yK3+VV/ILeoDfoDXqD3qA36U16k96kN+lNepPepDfpTXqL3qK36C16i96it+gteoveonfQO+gd9A56B72D3kHvoHfQO+id9E56J7+rSe+k99wP7pMHeZIXeb+8jWe//cmN3Ml/ved6XEku8iBP8seN+C24seHGhhsbbmy4seHGhhsbbmy4semFVw1eNXjV4FWDVw1eNXjV4FWDV+0+Hwz87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/Pc5++2Hy2W8/jD377U++35uIdr83Ee1+byLOfvth7Nlvf3ORB3mS18fhs9/+5MOreXIjd/K9jhq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqwasGr/C3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8ej7/9/JY2vZvecz+4Ty7yIE/y+nj77Lf/5X6/NxH9fm8iHn/7OjnISS7yIF9udHjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWH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2xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib89H3/7+S1teje91yeTj7/9yZfPj7/9ye3j7bPf/uQgJ/mvd508yJO8yJfPE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXM+gNeoPeoDfoDXqD3qA36A16k96kN+lNepPepDfpTXqT3sOrPybP65PJeX0yefbb3xzkJNfH2Hl9Mnn229+8yJfPZ7/9cPjst7+5f9fL2W9/c5LvdTTh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeIW/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72fPzt82R6mV+t65PJx9/+5EW+fF7XJ5PPfvuTOznIf73r5CIP8iQv8uXGglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14tZLeorfoLXqL3qK36C16i96it+gd9A56B72D3kHvoJd5O/72PPvth8nr+mRyXZ9Mrvu9iVz3exO57vcmcl2fTK7rk8l1vzeR635vItf93kSe/fbD4bPf/uY7rzv77W/mOoJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YJXC14teLXg1YZXG15teLXh1YZX+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib8/H3z5Pppf51eNv3ycP8iQv8v54++y3P7mRO/mvd52c5CIP8iRfbmx4teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhleb54P42xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e5799sPks99+GHv22598vzeR+35vIvf93kSe/fbD2LPf/uYiD/Ikr4/DZ7/9L9fZb/+7Xup3vz9Yv/u9ifpdXtXv8qp+l1f1u7yq3+VV/S6v6nd5Vb/Lq/pdXtXv8qp+jd5Gb6O30dvobfQ2eju9nd5Ob6e309vp7fR2eju9nd6gN+gNeoPeoDfoDXqD3qA36E16k96kN+lNepPepDfpTXqT3qK3+F0VvUXvuR/cJxd5kCd5vbytZ7/95Pu9ifrd703U429fJwc5yUUe5I8b9bu8qt/lVf0ur+p3eVW/y6v6XV7V7/KqfpdX9bu8qt+kd9I76V30LnoXvYveRe+id9G76F30Lno3vZveTe+md9O76d30bno3vXfeXvjbC3974W8v/O2Fv73wt9fZb/9jcp399j/G1tlvf/O++X5votr93kSd/fY/xtbZb39zkos8yPPj8Nlvf/P+rpez3/7mRr7XUYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgFf72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+Nvr8bef39Kkd9I7vz2KevztTy7yIH97FPXstz/58rnd703U428/1+Pq5CAnuciXGw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1edXjV4VWHVx1edXjV4VW/zwcLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhb6+z336YfPbbD2PPfvubF/nyud/vTdTZbz+MPfvtbw5ykos8Pg6f/fY3f3sUdfbbn3y/N1EdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXuFvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+9Hn/7+S3949Vx5NbffvuX++vFrb/99i8nuV5fbvXrk6l+fTLVr0+m+vUzVFw/Q8X1M1RcP0PF9TNUXD9DxfUzVFw/Q8X1M1RcP0PFj95Gb6O30dvobfQ2ehu9jd5Gb6O309vp7fR2eju9nd5Ob6e309vpDXqD3vjew61nv/3JSS7yIH/v4dbZb3/zvvm8j/Pkv33v38nfnnmx317stxf77cV+e7HfXuy3F/vtxX57sd9e7LcX++3Ffnux317stxf77cV+e0XRO+gd9A56B72D3kHvoHfQO+gd9E56J72T3knvpHfSO+md9E56J72L3kXvonfRu+hd9C56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L/r2ysHPO1hnzoNP337W9vbtRd9eOVjnwToP1nlcbyS+SnxF315P3/5wh1nn27fX07c/vGHW+fbtdfr2lwNmnRfrvPg8rwkvmHVerPPm5938vJt13nyeb39VyXnw6dvPtdis82adN5/n+sANvvucp29/mLnF3Lr7nNO3v7zhu885ffvLDQ747nNO3/7ygCd817nf7ztXx1cdX3V81e/3carf7+NUv9/HqX570er4quOrjq86vjp9+7ku/X4fp07f/nLCHR7w3ec8ffvDzOX51enbz/p3fHX69pevrzq+6vjq9O0vX191fNXx1dO3P8w646uOrzq+On37y6wzvur4quOrjq/o26vjq8558Onbz3XBVx1fdXzV8dXTtx+ed59z+vaXmTuZi69O3/7yhK+vOr56+vbDi/sIX3V89fTtD3Mf4auOrzq+On37y9xH+Iq+vejbq+Orjq86vuo8v+qcB5++/VwXfNXxVcdXT9/+MPdR3ecbp29/mbnFXHz19O1ffvr2h6+vBr56+vaHO3x9NfDVYH812F8NfDXw1cBXg/3VYH818BV9e9G318BXA18NfDXYXw32V0/f3g/fdR74auCrwf5qsL86ffu5Fqdvf5j91Ujm4qunb3+4w9dXA189ffvDG76+Gvjq6dsfDph1xlcDX52+/eUFs874ir69Br4a+Grgq8Hzq8F58Onbz3XBVwNfDXz19O0PN/j+3j99+8vMncydv++11enbX97w93x01pDz4Onbz1ns9O0vJ9zhAd9z2enbX95wXT7vkznXYjf49722On37yx3+Xt+zPnvC91x2+vaX77ls3PfJ1Ljvk6lx3ydT475PpgbnwcF5cHAeHJwHR+GN+33nmvf7zjXv951r3vcz1Lzfd655v+9c837fueb9vnNN9leT/dW8/VXN2zPUvD1DTfZXk/3VxFcTX0189fTt/fD9PM/7feea9/vO/+AGB8zc+36Gom//B094wRtmnZN1Ttb5vp+h6NuLvr1mss7JOifrzPMr+vaiby/69qJvr9n5eTvrzHnw6dvP2t6+vejba3bWebDOg3Ue1xsTX018Rd9eT9/+8IJZ59u317zvk6l5389Q9O1F317zvk+m5n0/Q9G3F3170bfXvO9nqHnfz1D07UXfXvTtRd9e9O1F317z9lc1OQ8+ffu5Fpt13qzz5vN8389Q876foZ6+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ufgq14a5j/BV4qvc3Eeb+whfJb5K9lfJ/irxVeKrxFfJ/irZXyW+SnyV+CrxVeKrxFfJ/qqzv3r69n74rnPHVx1fdfZXnf1V/9znG/2zYeY25uKr3gJO+Pqq46veJrzg66uOr3p84Abfde74quOrHgOe8F3njq86vur4quOrjq86z68658Gnbz/XBV91fNXxVc97H/X+ge/v/d4DZm5nbn+/1/bHE14w17ffc9np219ucMAJ33PZ6dtf/p7LxuEFb7guf331coMDTrjDA2buZO5k7mTuYu5i7mLu6UXPtTi96MMDnvDf3H7W+eurl+vy11cvN/hvbj9r+PXVyx0e8IQXvOG6/PXVyw3+zj3X9Ourlzs84AkveMP149O3v9zggBPu8IAnvOANM7cxtzG3MbcxtzG3MbcxtzG3MbcxN5gbzA3mBnODucHcr6/6OLzg79x5uC5/ffVyg79z++GEOzzgCa/fZ/v07S/X5a+vXm5wwAl3eMATZm5nbmfuYO5g7mDuYO5g7mDuYO5g7mDuYO5k7mTuZO5k7mTuZO5k7mTuZO5k7mLuYu5iLr4a+Grgq4Gvnr794e/cOlyX8dXAV6dvfznhDn8/V+vwhBd8fTXw1cBXA1+dvv3lhDs8YO5ffDXw1cBXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfHX69peZG8wN5iZzk7nJ3GRuMvf4ahye8II3fD15+vaXGxzw9eTp218e8IQXfO/fia8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria8mvpr4auKria9O3/4yczdzN3M3czdzN3M3czdzN3M3c/f15Onbj/dO3/5ywAl3+Hry9O0vL/h68vTth0/f/nKDA064wwO+9+/CVwtfLXy18NXCVwtfLXy18NXCVwtfLXy18NXCVwtfLXy18NXCVwtfLXy18NXCVwtfLXy18NXCVwtfLXy18NXp219mbjI3mZvM7cztzO3M7cztzO3M7deTp29/ecN1eVxPnr795YATvp48ffvLE17whu/9u/DVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tfDV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v3r69oeZi6/o24O+Pejbo/AVfXvQtwd9exS+om8P+vagbw/69ih8Rd8e9O1B3x707UHfHvTtQd8eha+K/RV9e9C3B3170LdH4Sv69qBvD/r2oG8P+vagbw/69qBvD/r2oG8P+vagbw/69qBvD/r2oG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69qRvT/r2pG9P+vakb0/69mz4qt3zYLb7vD0bvmr4qt3zYLb7vD0bvmr4qt3zYLb7vD0bvmr4quGrds+DSd+eDV/Rtyd9e9K3J3170rcnfXvSt2e7z9uz4Sv69qRvT/r2pG/Pds+D2e7z9myDuYO5+Krd82A+ffthfNXwVbvnwXz69oevrxq+avc8mKdvf5l1xlcNX7XFfbS4j/AVfXvStyd9ezZ81fBVW1zfzfW933dO+vZs+Krhq7a5jzb30T0P5tO3P8zcYu7tr7Ld/iqfvv3h79znn7+ebLe/ynb7q2y3v8rTtx+O219l3P4q4/ZXefr2l3/9VZ6+/eV7Hz19+8N3nenbM/BV4KvAV3HPgxm3v8q470PO07efaxT4KvBV3PNgxu2v8unbH2YuvqJvT/r2pG/PwFf07UnfnvTtGfiKvj3p25O+PenbM/AVfXvStyd9e9K3J3170rcnfXsGvgr2V/TtSd+e9O1J356Br+jbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+PenbM/FVch7M4j7CV4mvkvNgFvcRvkp8lZwH+33enh1fdXzV8VXnPEjfnry/Penbk7496duTvj3p25O+Penbs9/n7dnxFX170rcnfXvSt2fnPNjv8/bs7K96MBdfdc6DT9/+8PVVx1ed8+DTtz98fdXxVec8ePr2l1lnfNXxVec82O/z9qRvT/r2pG9P+vbs+Krjq855sHeu7/2+c9K3Z8dXHV91zoP9Pm/Pznnw6dsfZu5g7u2vst/+Kp++/eHv3PPPz+vJfvur7Le/yn77qzx9+8u//ir77a+y3/4qT9/+8t/cXof/MXfF+vd//qf/5z/927/8p//8r//1//6n/+3/+8f/+3/+r//2X/7nv/z3//b8v//z//0f73/yn//tX/71X//l//qP/+Pf/vt/+a//x//6t//6H//1v/+Xv//snz5//+cf/+X/997/efT/8M//9HcX/e//OM//8z/O5f/h3//93//Dv///", "file_map": { "5": { "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n", "path": "std/cmp.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 2d82c614067..2017353298a 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -33693,14 +33693,14 @@ expression: artifact "unconstrained func 4", "[Const { destination: Direct(21), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(20), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(0), size_address: Direct(21), offset_address: Direct(20) }, Const { destination: Direct(2), bit_size: Field, value: 0 }, BinaryFieldOp { destination: Direct(3), op: Equals, lhs: Direct(0), rhs: Direct(2) }, JumpIf { condition: Direct(3), location: 8 }, Const { destination: Direct(1), bit_size: Field, value: 1 }, BinaryFieldOp { destination: Direct(0), op: Div, lhs: Direct(1), rhs: Direct(0) }, Stop { return_data: HeapVector { pointer: Direct(20), size: Direct(21) } }]" ], - "debug_symbols": "tP3fjixPdp0Jvktd88Jt/zXTqwwGAlvNbhAgqIZEzY2gd5+Tbub726qZjIw6cX43PItVlb4yLN2+DN+2YuX//Nv/+S//x//4v//zv/77//Vf//vf/tP/63/+7f/4b//6b//2r//3f/63//pf/vk//vW//vuv//R//u36+j+ef/tP45/+5nP/s+5/4tr/jP2P7H90/2P7H9//xP5nXyX2VWJfJfdVcl8l91VyXyX3VXJfJfdVcl8l91VyX2Xuq8x9lbmvMvdV5r7K3FeZ+ypzX2Xuq8x9lbWvsvZV1r7K2ldZ+yprX2Xtq6x9lbWvsvZVxnWdf8f5V86/ev6186+ff+P8m+ffef491xvneuNcb5zrjXO9ca43zvXGud441xvneuNcT8715FxPzvXkXE/O9eRcT8715FxPzvXkXE/P9fRcT8/19FxPz/X0XE/P9fRcT39dT77+Xftfu86/v64n/+t//dPfnhvyP//Hf/uXf/m6H9sd+uu+/X/++b/9y7//x9/+07//j3/7t3/62//nn//tf9z/o//+//zzv9///sc//7df/+31T3/7l3//P3/9++uC/9e//tu/fKn/9U989fX9l841zhcv0fpykXe/Pi3P1+e8fuPrf90BJucKv3R4XWPM91+DnivMtfj6fPfrl8azBp7ffb3/xa/heq4wJb77HvL7rw+z8/Xh+jtfP5/7IOb8ra9/bsK89Dd+Bjmfn0G2n6G/fRvZfF7/L8kPwN6/gK/nAn6tby4w9K+8QtZezBW/8fVzXP9/7qH3v35dtQ/k+p2vz+dnsL79Ebz8+tCPvv4X/Z8F/PUL4HdW4NdGfnD261fV/OYKMj79Hl5dQez5KYjL73y9Pz8FCfudr9dVX++/8/Xy3IUiv+OvMc/Xa/7O19v1fL2N3/p6eV6/6fqtr39ev8nv/PzN/Pl6/61d8OvNTv0y0vlbVygQ/LrY+K0rBN9D/tb3IFI7UezbffDit7Kv5wLRfiP5//7O6Os3/7c49iwe+7Lvfqnri9+KqvO5mVTXt+8tdL64xFULoZfqb11ieG2pkd++Q7I/8Tbt9fex6vuQ8e1L+TL6Fi4ho+j0/WrYqztraRF62bfvdb7eT330Zs38w3drL5dS6netyvz+R5qfL+X8fCnXh0vp14dL+ep+EKk9Kr/W8tvv4cVd+etxr3Cna3x7Cf3wGebVz+Ldl+Gfv4z48GW8Wof3nsXmHyDVq5fx1ncRf4KXr2HnWTs0vl3OkI/vitCP74qwT2/u/Hwl4vOVyM9XYn64Eq+W8q07M//EnfnqZbz3XchfvT9Sn7fKkvH91MI+/pGm/5U395sv4/M7Mz+9M1+tw1v3xPwTd2Z+emfOP3FnvnxT8s407fUF3hinvXw7cF31GH7Jt5eYL4jpdU/FuL7dny+/B0YZ1/fUnvOv/B5G1G+OMe23lnLE+PgS9QT26hIv35zZqNvSZHx+Cf+9S9R0ZJj95guRWZfw9fEL+d1LJC9kzk8v4dfvXcIHl2hTjr+7xLiuD7fI62+i7u9ft6l9/03Ih9/Eq7dnbz5K/oLzh8+Sv44mP+T2D1d4A9wv36e+B+5xzb/wp/Emuce4/spv4j10/3CJ8fEl3kL3y+eG99D9/iX89y7xFrp/uMQ76H77hfzuJd5C97uXeIHul5d4E93yMTXzc3SLffhN5Oe3d35+e+fnt3d+fnvn57d3fn575+e3d/6B21v1r7yz3ry91T99gvj0PYF9+pbg5YT6zbcEuj5dBv38LYGNv/KbePNpTj9/mtPPn+bk86c5+ZiZry/x3tOcfP40Jx8z8/Ul3nuak4+Z+fISbzLTP2Xm62/iPWb6p8x8dezw7tOc56dPc6+Ogt57mnt9hXee5uRzdMf4C38a76I79K/8Jt58mpPPn+bk86c5/fxpTj9G9+tLvPc0p58/zenH6H59ifee5vRjdL+8xJvozo+pqZ+j+9Vb5vfec9vnT3P28e39+hLvPc3Z509z9vHt/foS7z3N2ce398tLvHl7f3wc9PqbeO/2/vg86GU6dT0/UVm/k+/VCk2p5O98fd1ROn7L38rfvvN/dcbKOXEL1779aQ2peLS0d3Vvf3nUl0dc//iXa70j1PZu7O0v90pmewtmv+9esVrV+dGXtx/cP/Dl9dobiN7/8lnu83e+vMIBuj5z//bL5dXJzv+eVeTW8b+7xIvfzu98wOSH76FyARI+vr1E/qXfQ1uH+G4dXvwkrHJUlv6P/yBnxbpn/AY+5qxHuvkbG3hWfHhd86MvH9+99leBchvPT8/ax2P+LlD+6wHjxc//vUS5jBe/ht+MlMvIlyB9J1P++hrvhcplvBhKvp21+eE7eStWLi/fFrwXhhb5fOghoh8OPeTVcc5beejX6/letlwk/sB65h9Yz/nxeq5P11M+z+CKvvpY2XsBv1/Xf8W/NxJ+L38ib78S+wOv5NPI5cu1eCsmKK8+2vM+u9Q//j7+CENf8++tgLXY+PzusM8/SSGmH9/n8QdWw//AasQfWI38dDXs049kiP2Re/TVK3nv+/Dxl++V9/La4p9/qOL+LO9feJ+/+0r+wD3qH9+jbh/fG3/kHvWP79H4I/foq0eVa9WHiH9d49uHlXcvMeTbS7x87/TOAdwPV3jjAO71e5b3TuAkPh2q//BdvHUEJ7H+0u/ivTO4n64xPr/GW6dwr99HvndO8Q9cw3/zGm+dVPx0jXeOKt5/Lb99jbcOK96+xovTitfXeO+4Quanp+Y/fBdvnVfI/PTY/OX7yHefgqd/+hT86vDnPZK/vsI7JH/5jvpNks/1V/483iX5Gn/pd/EmyX+4xvj8Gu+R/OVTzpskf/8a/pvXeI/kP1zjLZK//Vp++xrvkfzda7wi+ctrvEfyX1Poj3dLfExyvT5Nd7x+UnrzPvc/cJ/7H7jP/Q/c5/4H7nP/A/e5/4H73P/AfT7sL73D3rzPx6cxj9cnEO899dnHT32f5y5Vro9X4vPgpX78GaHX38W7T32fRy9/uMabT33jDzz1jc8Z+voabz71jT/w1Dc+Z+jra7z51Dc+Z+jLa7zJUP2Yoa+/i/cYqh8z9NVZyptPfaqfnn2qfjq/++EKbz31jc9JbvJX/jzeJbnZX/pdvPvUN/7AU9/4A099n38C6h+4hv/mNd586vv8Q1Dvv5bfvsabT32ffw7q9TXeJLl/ztDPPwml/nHe2D//uMg/cA3/zWu8+dT3+SdG3n8tv32NN5/6Pv/QyOtrvHmff3625J9/bEQ/P1t6NWKe1Rk854vjwpeXGFmXEP29S1zOJezbS7zK2H7YRD/jyYvN/HYZXn19znoF8Ttfb/X16/va45efupesHSrr+v4a89Ui1ipc8v0V1qv3GKu+Dfn1JpDT9L+7rV9VyqnVGya1Kd9d4nW1HrtLW2b671/Ly065GHWYPuLX3ffta3m1zX/tj6LvnDq+vciLm1tH7TEd7RL+9y3Or06ksn2IZMn313hVsFol58vnb11hXPWJiP8tJfEPvZJ1Fb+XvHgl7/9Y7Pr2x/LyBtFq3f+l26/Fv7vIevnMOLy9nMt/7zuxUX9JI0zl9y7iUT+c8Pz+5bz6rMM1Kpx0tU/c/P0lXv58F09t3/9kXn0Xb17i9WpE++H2FPE/dJFMfi592/39i1mf/Wr74btYAcjW/M2XsvgLBbG+B9kPN3tc7Wb/zZ+MZMDlzN/6BWE1oPj13nb+3q9cW7yRHN/+yrXr9RFERdV/6fjuDvnhItIuIp7fXuRl22U6v7l/6xJjsiDL7PdeinKHuOZ3BLExPtsxP3wXjaduqr/3Ui5+5fq1vr3IsM93zE8Xeet3zE8vZ/CTucb4rW3nPIv+WuPf23bBs2h8/7jwwzVmI+L6duu+Omkavwa0tSBTvr9V5dNb9fV3oc53ofH9d/HyIsYfQJo2/PcuMoz3VL9+St9exD9GyOvv42rfxxXxO9/HmzT84SdTz7W/tMhvXSQXu+6XHr95kf7m/3sS6R/43f3TRd57t/ty86bU7/+03wTArKOBMdsvzL8HgPof+N39+iJv/u7W/PhuffnJqPc23uuX8ubvbvvwTwr+8F28+bv79UXe/N39+m8WvbljfrjIe7+7f3g5f+B390xwNudvTLlW7dul9jtfb8+L6Ker/8CUrW7x5d/OhOxVw/+vY0StB8s5vr/G+HDKZi6fT9ns1QD6vSnb69UYtVml397/P6/FP5+y2csI1ZtTNvP8eMpmL/+O0XtTNnv1maa3pmwvr/DmlO31K3lvyvaP/Fi+HcT8cIO8N2Wz+BNPQK+/k/embD9c5L1hzA8XeW9UZzE/HdXZqwOo9+ZsL7+LNy/xejXeG9X9cJH3RnWW+uGblx/ujrembD/d7O+973j9nbw3ZfsJ7jyKxchvX06+vEPaA//qJT7/0EXSyGblb1+k/sztL/1iTV790hSiPBLr996GaI1RRPX7a0z9A08vry/y5tPL/PxZe34+Nnj9Ut58epnzQwC8/i7efHp5fZE3n17+xKze/sTp1k8v562nlx+2DO0QmtfvbTsrhoi5/s4TTGUz11y/8/W8V76u3/kGxjUKg9f4rW+Bk/VLvs06+Ks/fiQBvsJeXOPTpyi//sBTlF8fP0W9Xo2s5w5JHd+/lj/wFOXXH3iK8uvzpyi/Pn+K8uvTp6iXV3jzKer1K3nvKeof+bF8+x75hxvkvaco/xPnSD98J+89Rf1wkfcegHzkpw9APj5+enn5Xbx5iesPPAD9cJH3HoD81aeF3nn/88N38d7j8U8Xeespyv/EyesP38l7T1E//IKwKqXK+Pa3vr+q1Hv3Scxlff4k9sNF3nsS++kibz2J/bAmb5Lo9UXeJJF+nJpy/Tg19fK7ePMSr1fjTRK9vsibJNIPU1M/fBdvQuSHi7yHs9cXefN39584jPI/cRj1w8v5I0ykEn5+n716fY3JB6Lm95MYf/U3gt+dovxwkfemKP76MOadKcrLS7w3Rfnhpbw3RXH/cIz6w3fx3hTlh4u8N0Xxl0cg7267Hy7y3rb74eW8NUX5YcvMelZd129uu1V92rJm/tYQQ9uT2fdP/6/+ppCyXXR8/5kLD/10BvFqVP/2DCL84xnEy9UQ/laAXvn9a8k/8Hbq9UXefDv16ljqzbdTeX38Xujzw7EfVuPNt1OvL/Lm26n88PNVP3wXb74T+uEi770ne32RN99OvT4KepPrP1zkPa6/fjlvvp16fZE3Hw9fBvPffTx8fZE3Hw9/uMh7j4evmZiFVZnym0x8cy478w/MZV+dTL07l33Vw/fuXHZdn85l1/X5XPblK3lzLvsP/FheEP7VTaZefxpKc/3eWxm/6k8//JoRfH6N70P1vl4siHndYubyLczWn3icWn/gcSqujx+nXl7izcep9Qcep+L69HFq/YnHqfUHHqfi+gOPUz9d5L1fu+tPPE693nX8WaD4/hEixss/01WfPdf57aq+5Cm/K6+V338T8mrr16mweb64hn7+/PDDRd57fojhnz4/xIhP3/y//C7evYR+/vzww0Xee34I+TDW/8N38d7zw08Xeev54YeLvPf8EPIHTpd+ushbIPvh5bz3/PB6/0fFSizk+/3/J2bl8SfOdOJPnOmEjo8hovIxAV5/4OqtS/yJM534E2c68aqh7y2I/IkznfgT5xfxJ850wq4/AJEfLvInIPLe/CBeny69Nz/44SLvzQ9+ushb84P4E0fuYfkn1iT/xJrkH1iT178nkt8T30/dw1+CNbUOIa789hnxh4usARiXfLv/Xp1TvfmM+LIG7K1nxNcv5ddxSOVDxmXf/qp5Xae9WtPc+v73lf+BQVX454Oq8M8HVRGfDqpeXuHNQdXrV/LeoOof+bF8/y7A/0CbRYT/gd81/gcqU364yJszovi4MuXlJd7d/3+gMuVG70dvrfwPVKb8dJO9NVT56SZ7713RD1DNBtX1/aL+kTV5+Z3Q7PdLf//OOeenP97Xvy+vye/LF0/Or377pz4/GMvvc//x6i9Evdvu8cNF3qsqifn5b//5+W//1y/lvRaamJ8+WL3+Lt5rofnhIu+10Ly+yJtdJ7H+xIPV+hMPVj8s7FslMj+tyVslMj9s3nqAt1zfb97lf+Ct++uLvPnWfX1cd/L6+3j3ffercr+331a9vsib74heX+S9d0T5+jNV7zDx5SXe/cmsz98R5avo/ltMfP1dvPnb/4f74613RHn9AZz9dJH3cPbDnnnrbVWO8ScW1j9/W5VDP71H/PO3Va9+LuMqgIzxLZfz1WmVTs4h1/efK83xB2JmL18KD8xD5/ffxqtO9Kv+OrZf339YJl8eVmWN7n+9Jn6w+neXeHGPWv2KMrm+/yZefZTKa1SWvlpB/Py7a7z6dKryc9X17Z+2zleHTHpJzWMu/fZPufzwQ1nPNXx8fzyUr/7s+bs/lPz4hzL/wA9lff5D0esv/qHwd2l8rO9326sTqjd/KPrqD0XWrREvyPPqc0vv/lBefXzq7R9KfPxDeQlA3oL9Or38fjVe/fETr99r7t//MYJ89eGpdw9A0z6OUL9+Lfx9Cp/fV8alfX6LvjoOeo8b9gduUfsDt6h9fov+8EOpcyCfL7jx6sMo7/5Q1qc/lFcfd3r3h/JqLvbuD+VVnd+f+KHEqD9q8+ug1r9fjxc36crKgK4c3741/xMtWj+8liJYyIvfCa/OPN68wV7+Fam3fjG9Orx59wZ7dYj07g0W46/9xVSvZIzvs/D58tNSow6hf/1wxvfXsD/wiyk+Dta9fi3Cn0h88dd2MvLzcecPF3lv/Jvx4WelXy7HdD4J59/Xqb++RlQ0Z8b35UqZL0g6V9UrtT9F9Wto+v53kfz9zZQX38Urjs465ljz+5L7H65Rn01eL/6kVL46fnpvNV59F+MaWXfX9eoh4dXh05/4PpSh4GXf91b9cBXT4Crx/XPoq2H696/m//3r//vn//Kv/+0//9t//S///B//+l///b9/fdl1j1f+6W/j/CvnX71nLf/0Nzv/+vk3zr95/p3n33X+HdcjxiPkEc81x33RXzfy8EfEI/IR8/yxlrGOkOsR4xH3lX9tF9FH2CP8EfGIfMR8xPr6mxK/vh+9HjEeIY/QR9j5Ozjqj4iv/+rXt6H5iPmIdYRdjxiPkEfoI+wR/ojnyvZc2Z4r23Nlf67sz5X9ubI/V/bnyv5c2Z8r+3Nlf67sz5XjuXI8V47nyvFcOZ4rx3PleK4cz5XjuXI8V87nyvlcOZ8r53PlfK6cz5XzuXI+V87nyvlceT5Xns+V53Pl+Vx5Pleez5Xnc+X5XHk+V57Plddz5fVceT1XXs+V13Pl9Vx5PVdez5XXc+X1XHlcV6lRSkppKSvlpaJUlpqlymOUxyiPUR6jPEZ5jPIYt4d+qSw1n/259+WX2hvzVqOUPNt3781bWSkvFaWe/Tlqgw5Zj9Kr1CglpbSUlfJSUao8tDy0PKw8rDysPKw8rDysPKw8rDysPKw8vDy8PLw8vDy8PLw8vDy8PLw8vDyiPKI8ojyiPKI8ojzi9sgvlaVuj6/fEbEelVepUUpKPdQcezvfyktFqSw1D1VHrkftTX3/LhilpFTdu7WxR+3sUVt71N4etblH7e5R23vU/h61wUft8FFbfNQeH7XJR+3yUdt81D6X2udS+1xqn0vtc6l9LrXPpfa51D6X2udS+1xqn0vtc6l9LrXPpfa51D6XUR6jPEZ5jPKQ8pDykPKQ8pDykPKQ8pDykPKQ8tDy0OdnLvuX8f1rXktZKS/1vIkQzVKz1MMrsXojYfVOwqSUlrJS9W6i9rnUPpfa51L7XGqfS+1zqX0utc/FecNSHrXPpfa51D6X2udS+1xqn0vtc6l9LrXPJXhXVB5RHlEeUR5ZHlkeWR5ZHlkeWR7JW6/yyPLI8pjlMctjlscsj2mHSDL9kEZmlMpSs9TDK1nPWzxZo5SU0lJW6nmfJytK5XNP7n1+q3WU1j7X2uda+1xrn2vtc619rrXPtfa51j7X2uda+1xrn2vtc619rrXPtfa51j7X2uda+1xrn2vtc619rrXPtfa51j7X2uda+1xrn2vtc619rrXPVctDy0PLQ8tDy4M33rzz5q13vffWevOt9e5b6+231vtvrTfgWu/Atd6Ca70HV3t+5lrvwrXehut+H65fSkppKSv1PPOoR6ksNUs9zz0aV6lRSkppqWcPau1zrX2utc+19rnWPtfa51r7XGufa+1zrX2utc+19rnWPtfa51r7XGufa+1zrX2utc91lscsj1keszxmeczyWOWxymOVxyqPVR6rPFZ5rPJY5bEeD7uuUqOUlNJDKbvs0McuLxWlstQs9TyR2rhKjVJSSks9j6U2vFSc+9RGlpql6tm09rkJT6f1eFr73GqfW+1zq31utc+t9rnVPrfa51b73JRH4PKofW61z632udU+t9rnxjM2D9k8ZfOY3Z6zy4MnbR61edbmYbv2udU+t3retnrgtnriNudhvjzqodvqqdvqsdvqudvqwdvqydvq0dvq2dvq4duCiUF5RP3M6wHc6gnc9iP4132ao5SU0lLPiMbSS0WpLPWMaSwfXtm8So1SUurZg1b73GqfW+1zq31utc+t9rnVPrfa51b73GqfW+1zq31utc+t9rnVPrfa51773Gufe+1zv7SUlfJSUSpLzVLlMcpjlMcoj1EeozxGeYzyGOUxymOUh5SHlMd+Ps8vpYc+LlbKS0WpLDUPfbwmaF4jNK8ZmtcQzffz+fpSVsrPfeoapbJUjaVqn3vtc6997rXP3Zh61dir9rnXPvfa51773JmqMVZjrsZgjclaG62VB8M1pmuM12qfe+1zr33utc+99rnXPvdgflceNWfz2ude+9xr1OY1a/MatnlN27zGbV7zNk+GhOVRIzevmZvX0M1r6uY1dvN6Pvd6Pvd6PvdZP/PJJLI89vP51326rlKjlJTSwyFfVspLRak89PE1Sz28iusqNUo9ezBqn0ft86h9HrXPo/Z51D6P2udR+zxqn0ft86h9HrXPo/Z51D6P2udR+zxqn0ft86h9HjUij5qRRw3Jo6bkUWPyqDlc1Bwuag4XNYeLmsNFzeGi5nBRc7ioOVzUHC5qDhc1h4uaw0XN4WI/n+eXemZLYVrKSnmpKPXMlsJmqYdX4VepUUoOm8K1lJ37NNxLRamaddc+D+boDNKZpDNKZ5bOML1N02uczjydgXrt86h9HrXPo/Z51D6P2udR+zySkX151D6P2udR+zxqn0ft86h9HrXPo/Z51BwuJucC5VFzuKg5XNQcLmoOFzWHi5rDRc3houZwUXO4WBw+cPpQxw/1fJ71fJ71fJ71fJ7X8zPPej7Pej7P/XyuX+rhVY6r1Cglh0M5tJSV8lLPLDxHlpqlHl5lHYRl7fOsfZ61z7P2edY+z9rnWfs8a59n7fOsfZ61z7P2edY+z9rnWfs8a59n7fOsfZ61z7P2eda8PWvenjVvz5q3Z83hsuZwWXO4rDlc1hwuaw6XNYfLmsNlzeGy5nBZc7isOVzWHC5rDpc1h8v9fJ5f6pmFZ0gpLWWlvNQzC8/IUrPUw6vMq9Q4bMqUUvrcp2ml6t5tB2h173KEVvs8a59n7fOsfZ61z7P2edY+z9rnOTmlK4/a51n7PGufZ+3zrH2etc+z9nnWPs/a57k4CuQssA4Da5/P2uez9vmsfT5rDjdrn8/a57PmcLPmcHNw4FgeNYebNYebNYebNYebNYebNYebNYeb9Xw+6/l8Cqea5VHP51Oen/ms5/NZz+dTnrO7KbPUw6upV6nn7G6qlNJSVuo5u5sapbLULPXwatY+n7XPZ+3zWft81j6ftc9n7fNZ+3zWPp+1z2ft81n7fNY+n7XPZ+3zWft81j6ftc9n7fNZ+3zWvH3WvH3WvH3WvH3WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7WHG7u5/P8OuN+zu7mHKWklJayUs/Z3ZxRKkvNUg+v5n4+X19qlHrO7ubSUnXv1j6ftc9n7fO5OJjnZL6O5mufr9rnq/b5qn2+ap+v2uer9vmqfb5qn6/B8X951D5ftc9X7fNV+3zVPl+1z1ft81X7fNU+X0LGoDxqn6+aw63a56v2+ao53Ko53Ko53Ko53Ko53FKCDOVRc7hVc7hVc7hVc7hVz+erns9XPZ+vej5f9Xy+9vO5f6nbI7+Ul4pSWWqWWo/a79tvNUpJKS1VHl4eXh5eHl4eXh5RHlEeUR5RHlEeUR5RHlEeUR5RHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeszxmedy/z78+R73u3+dbWSkvFaXK497nX7nlde/zW92/z7capW6P+FJaykp5qdvDvlSWmqXWUeO6N/qRzyv5JQWpSEM6MpCJnMjb7c6v3Vv+66V//TFKpCAVacj7dektcRu4jWf5vqKKJeVCDqQgFfks4i/pyEAmctaaCSuprOTNgSMFyUoqK6mspPLalNemrKSuknYhR62vsZLGShoraY4MZNb63mA4EjfHzVlJZyWdlbzxcKQjA8lK3og4cpW8IXEkKxms5M2JIw3pSFYyWMlgJYPXlry2ZAckOyD5ud3I2EudrGSykjc1jpzIVfIGx17fmxxH4jZxm6zkZCUnK3nz40h2wGQHLFZyM2RLQSqSlVysZIHkqyAYyQ5YtZIndLflQApSkYZ0ZCDzWeodvruXb6fvtoQlA5YMWLITePf67gjekbjBkp3Cu9dswJIBSwYsGbBkwJIhtZIDlgxYMmDJkFrJAUsGLBmwZMCSoawkLBmwZMCSAUsGLBmwZMCSO5x3ltpYSVgyYMmAJQOWjM2Se31hyTDcYMkd0ztrBksGLBmwZMCSAUuGs5KwZMCSAUtGsJKwZMCSAUsGLBnBSsKSAUsGLBmwZMCSAUsGLNnpvb3UyUrCkgFLBiwZsGRsltzrC0vGxA2W7BzfXjNYMmDJgCUDlgxYstN8eyVhyYAlA5bsRN9ePlgyYMmAJQOWnFjf/f3CEoElAksElggsEVgisGTH++6l3vm+sfO0E1ksEVgisGSH/O71FVhyYn63BSzZQb+vrr2xk35fn8kbO+on+8tWyZslRw6kIBVpSEd+uX19dH/szN+RE7lK3iw5ciAFqUhDOhI3xU1xU9wMN8PNcDPcDDfDzXAz3Aw3w81xc9wcN8fNcXPcHDfH7WaJ3D/YmyVb3iw5ciAFqUhDOjKQicQtcEvcErfELXFL3BK3xC1xS9wSt4nbxG3iNnGbuE3cJm4Tt4nbxG3htnBbuC3cFm4Lt4Xbwm3hdrPkq1Vi7PDgV+HG2OnBIwWpSEPebuuWgUxk7e6dItxyXMiBFKQiDenIuid3mvDIiawdsAOFRw6kIBVpSEfiBksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCkh031Psnf7PkSEEq8stN7x/WzZIjA5nIL7evovZx5w6PvFly5EAKsnaAwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCkt0lZtdF3IgBalIexBkmyVyy0AmciJXyc2SdcuBFGSxxGCJwZIdWDwykRNZ5DLelxgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicES432J8b7EeF9ivC8x3pcY70uM9yXG+5IdbTwSt8Atilw73nikIg1Z5NoRxyMTOZFFrh1zPHIgBanI2m8GSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSxyWOCxxWOKwxC9DOjKQiZxI3AZuA7eB28Bt4LZZErcscvlI5EQWuVwuZJHLRZCKLHI5zzgugUzkRBa5dkTyyIGs/eawxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJTtBeSRugVvgFrgFboFb4Ba4JW6JWxa5dprySEM6ssi1E5VHTuQqOYtcO1V5pCAVaUj2GyxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJIYuA3cBm4Dt4Gb4Ca4CW6Cm+AmuG2WxC2LXCETWeQKvZADWeQKVaQhi1yhgUzkRBa5wi7kQAqy9lvAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsCluzA5pG4JW6JW+KWuCVuidvEbeI2cZtFrh3ePNKRgSxy7QDnkUWuHeE8ssi1Q5xHKtKQjmS/wZKAJQFLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLEnBTXAT3AQ3xU1xU9wUN8VNcVPcNkvilkWu1CJX2oUcSEEWudIM6cgiV1oiJ7LIlX4hB1KQiqz9lrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlOx96JG4Tt4nbxG3iNnFbuC3cFm4Lt1Xk2lnRIwOZyCLXzovecgdGjxzIItfOjB5pSEcGsvbbhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCVTcVPcFDfDzXAz3Aw3w81wM9wMt82SuGWRa/qFHEhBKrLINd2RgSxyTZ/IIteMCzmQglSkIWu/TVgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROW7Djqkbgt3BZuC7dVbjuUeuRAClKRhixy7WjqkYmcyCLXjqceOZCCLHLtiOqRjgxkImu/LViyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyQ6xH4ua4OW6Om+PmuDlujpvjxpnwzrPeENuB1htMO9F6pCAVacgi1461HpnIItdOtm6ZF3IgBalIQzqy9tuCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWrGKJXMUSuYolchVL5CqWyFUskZ17PTKQiZxI3AZuA7eB28Bt4LZZsuXNkrhlIidylbxZcuRAClKRhnQkboKb4Ca4KW6Km+KmuCluipviprgpboqb4Wa4GW6Gm+FmuBluhpvhZrg5bo7bzZKvRmPZudcjDenIQH652f3TvFly5Cp5s+TIL7evSnjZudcjFWnI201vGchETuQqmby25LUlK5msZLKSyUru2eu6ZdbLvFly5Cp5s+TIgbxfm9xSkVbrcLPkyECykpOVnKzkzZK9OouVXKzkYiVvluwlWazkYiUXK7lYyVV3yc69HjmQglSkIf1Zvp17vZdk516PnMhayZ17PXI8a7Zzr0fqsw4793qkIwOZyIlcz+rs3OuRAylIfZZk516PdGQgE1n7bcCSAUsGLBmwZMCSnXvdy6e133bu9UhWUllJZSVvluw1M1byZsleB2MljZU0VtJYSWMlb5bs1TFW0llJZyU3S+4lcVbSWUlnJZ2V9CLXzr0eyUoGKxmsZLCS+0z4Xr4ocu3c65GsZLCSwUpultxrlqzkzZK9DslKJiuZrGSykslKbpbcq5OsZLKSk5XcLLmXZLKSk5WcrORkJWf9Dti51yNZyclKLlZysZJ79nov36rfATv3eiQruVjJxUpultxrtmold+71Xoedez1SkIo0pCPjWZ2dez1yImsld+71XpKdez1SkIo0ZP0OEN6XCO9LhPclwvsS4X3Jzr3ey7dzr/eS7NzrkYZ0ZCCz1kwmsn4H7NzrkaykspLKSioruVlyr46ykspKKiup9dt0516PZCWNlTRWkvclwvsS4X2J8L5EeF8ivC/Zude9fF6/TYX3JcL7EuF9ifC+ZOde95o5K7nfl+Qtv9zi/t/eLIn7W79ZcqQgFWlIRwYykRO5SiZuN0viXuqbJUcq0pC32/0jvFlyZCIn8na7V/JmyZEDKUhFGtKRX255X/dmyZETuUreLDnyyy3vl3mz5Mjb7f4B3Cw50pGBTORErkfu3OuRAylIRRrSkYFM5ETiNnAbuA3cBm4Dt4HbwG3gNnAbuAlugpvgJrgJboKb4Ca4CW6Cm+KmuCluipviprgpboqb4qa4GW6G282Srz/6IDv3emTtgJ17PTKQiawdsHOvW94sOXIgBVk7YOdej3RkIBM5kbXfdu71yIEUJG6BW+AWuAVugVvglrglbolb4pa4JW6JW+KWuMEShSUKSxSWKCxRWKKwZOdej8Rt4jZxW7gt3DZLxi0V+eX29edTZOdejwxkIieyyLVzr0cOpCAVaQ/Pdu71yNvNb5nIiawdYLDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMViyc69H4ma4GW6Gm+FmuBlujpvj5rg5bo6b4+a4OXfJzZIbeDv3uuXNkiMHst4p7NzrkYZ0ZL1T2LnXIyeyOLlzr0fWfjNYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwZKdez0St4Xbwm3htnBbuK1y27nXIwdSkIo0pCMDmciJxO1myY3BnXu90bZzr0cq0pCOrHd4O/d65EQWJ3fu9ch6h7dzr0fqc1fv3OuRjqwd4LDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscluzc65G4OW6BW+AWuAVugVvgFrgFboFb4Ja4JW6JW+KW3CWJW+J2s+Rm3869Hlmc3LnXI+uJaudej1SkIeuJaudej0zkRBYnHZY4LHFY4rDEYYnDEoclDkscljgsCVgSsCRgScCSgCUBSwKWBCwJWBKwZOdej8Rt4DZwG7gN3AZuA7eB28BNcBPcBDfBTXAT3AQ3wU1wu1lyw3HnXm/g7dzrkYJUpCH9Ad7OvR6ZyIksTu7c603EnXs9Up57fedejzRk7YCAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELNm51yNxgyU793okbonbxG3iNnGbuE3cJm4Tt4nbxG3itnBbuC3cFncJ85JgXrJzrzf7du71yIksTu7c682+nXs9UpCKtAd4O/d6ZCATOZG1uxOWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViyc69bKm6Km+KmuCluipviprgpboqb4Wa4GW6Gm+FmuBluhtvNkhuOO/d6A2/nXo8cSEEq0h7g7dzrkYFM5ESuh4g793rkeO71nXs9UpG1AxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJJm9JixJWJLMXpPZazJ7TWavk9nrZPY6mb1OZq+T2etk9jqZvU5mr5PZ62ReMpmXTOYlO/d63xqTeclkXrJzrzf7du71yERO5HrYt3OvRw6kIPUB3s69HunIQCaydveEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFiyc69H4ua4OW6OG7PXyex1MnudzF4ns9fJ7HUye53MXiez18nsdTJ7ncxeJ7PXyex1515vOO7c6w28nXvdMi/kQAqyJoY793qkIwOZyPkQcedet9zPOPfdNweSHQBLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLFixZsGTBkgVLFixZsGTBkgVLFixZsGTBkgVLFrPXBUsWLFnMXhez18XsdTF7XcxeF7PXxex1MXtdzF4Xs9fF7HUxL1nMSxbzksW8ZDEv2bnX+9ZYzEsW85Kde73Zt3OvRwYykfNh3869bmkXciDrZGXnXo80pCMDWbt7wZIFSxYsWbBkwZIFSxYsWbBkwZIFSxYsWbBkwZIFSxYsWbBkwZIFSxYsWZzjLM5xFuc4i3Ocxex1MXtdzF4Xs9fF7HUxe13MXhez18XsdTF7XcxeF7PXxex1MXtdzF537vWG48693sDbudcji5M793rkQNbJys69HmlIRwYyHyLu3OuR69zrunOvRw7kswP0KpboVSzRq1iiV7FEr2KJXsUSvYolehVL9CqW6DVwG7gN3AZuA7eB28Bt4Ca4CW6Cm+AmuAlugpvgJrgJboqb4qa4KW6Km+KmuCluipviZrgZboab4Wa4GW6Gm+FmuBluzl3iuDlu/pxA6869HunIQD4n0Lpzr0euknEhnxNo3bnXIxVpSEc+u1uvYolexRK9iiV6FUv0KpboVSzRq1iiV7FEr2KJXolb4pa4JW4Tt4nbxG3iNnGbuE3cJm4Tt4nbwm3htnBbuC3cFm4Lt4Xbwq1mrzpq9qqjZq86avaqo2avOmr2qjv3+gVH3bnXL+Dpzr0eOZGr5LiQzwm07tzrkYo0pCPjEFF37vXI5wRad+51S7mQtQMGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUuG4wZLBiwZjpvj5rg5bo6b4+a4BW6BW+AWuAVugVvgFrgFbsFdsp9x1i0H8sttXrdUpCG/3Oa9A2DJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYIrBEYInAEoElAkukznFU6hxHpc5xVOocR+XCbeA2cKszYZU6E1apM2GVOhPWnXs98nk2VakzYZU6E1apM2GVOhNWgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElAksElggsEVgisERgiQRuiVvWO/Ode73fR+3c65HPKa2e3OuWgUzkc/qgJ/d6y3khB1KQ7DdYQu5VBZYILBFYIrBEYInAEoElAksElggsEVgisERgicAShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLNGB28Bt4DZwG7gN3AZuAzfBTXCTJ/WnO/d6ZJFr516PDGQiJ7LItXOvRw6kIBX5pP50516PfFJ/unOvR05k7QByr0ruVRWWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJJm6JW+KWuCVuiVvilrglbhO3idvEbeI2cZu4Tdwmd8l8Th905163XBdyIJ/TB9251yMN6chnqqY793rkRBYnd+71yNpvBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYoKb4Ca4CW6Cm+AmuAluipviprgpboqb4qa4KW6Km+JmT+pPd+71RtvOvR6pSEM68pmq6c69HjmRxcmdez2y3uHt3OuRzymt7tzrkY6sHWCwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJbYxG3iNnFbuC3cFm4Lt4Xbwm3htnBbuNU5jnqd46jXOY46s1dn9rpzr/et4cxendnrzr3e7Nu51yOLkyf3uuVz+qA793qkIg1ZU7Wdez0ykRNZnHRY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxI33Aw3w81wM9wMN8PNcDPcDDfHzXFz3Bw3x81xc9wcN8fNn9Sf7tzrDbydez1SkIo0ZE3Vdu71yEROZHFy515vIu7c65HPKa3u3OuR7ABYQu5VHZY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQFLApYELAlYEpzjBCwJWBKc4wTnOME5TnCOE5zjBOc4wTlOcI4TnOME5zjBOU5wjhOc4wTnOMHsNZiXRGXoNZiXBPOSnXu92bdzr0dOZHFy515v9u3c65GCVGSdPuzc65GBTORE1u4OWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgSThugVvgFrgFboFb4MY5TnCOE5zjBOc4wTlOcI4TnOME5zjBOU5wjhPMXoPZ68693nDcudcbeDv3euRAClKRdfqwc69HBjKRE/mkWXTnXo+sWdDOvR7JDoAl5F41YEnAkoAlAUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlyew1YUnCkmT2msxek9lrMntNZq/J7DWZvSaz12T2msxek9lrMntNZq/JvCSZlyTzkqwMvSbzkmResnOvN/t27vXIRE5kndLu3OuRAynIOqXdudcjHRnIRNbuTliSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUlyjpOc4yTnOMk5TnKOk8xek9lrMntNZq/J7DWZvSaz12T2msxek9lrMntNZq/J7DWZve7c6w3HrM8J68693nLnXo8cSEHWxHDnXo90ZCAT+aRZdOdetxx1Srtzr0cKsnYAuVedsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJrPXCUsmLJnMXiez18nsdTJ7ncxeJ7PXyex1MnudzF4ns9fJ7HUyL5nMSybzksm8ZDIvmcFdwrxkMi/ZudebfTv3emQgE1lplp173TIv5EDWycrOvR5pSEcGsnb3hCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMjnHmZzjTM5xFuc4i9nrYva6mL0uZq+L2eti9rqYvS5mr4vZ62L2upi9Lmavi9nrYva6mL3u3OsNx517vYG3c69HFid37vXIgayTlZ17PdKQjgxkpVl27vXIyins3OuRA1k7gNyrLliyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJYvZ64IlC5YsZq+L2eti9rqYvS5mr4vZ62L2upi9Lmavi9nrYva6mJcs5iWLecliXrKYl6zJXcK8ZDEv2bnXm30793qkIwNZJ9A793pkcXLnXo+sE+idez1SkYZ0JLsblixYsooldhVL7CqW2FUssatYYlexxK5iiV3FEruKJXYVS+y6cBu4DdwGbgO3gdvAbeA2cBu4DdwEN8FNcBPcBDfBTXAT3AQ3wU1xU9wUN8VNcdMn9Wc79/oFPNu51yMncpW0C/mcQNvOvR6pSEM68kn92c69HvmcQNvOvW5ZuVcj92rkXu0qlthVLLGrWGJXscSuYoldxRK7iiV2FUvsCtwCt8AtcAvcArfALXAL3BK3xC1xS9wSt8QtcUvcErfEbeI2cZu4TdwmbhO3idvEbeI2cVu4LdwWbgu3hdvCbeG2cFu4VYbedu71K+pnO/d65JP6s517PdKQT+rPBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZipviprgpboqb4Wa41ZmwjToTtlFnwjbqTNh27vXI59nURp0J26gzYRt1JmyjzoSN3KuRezVyr0bu1ci9GrlXI/dq5F6N3KuRezVyr0bu1ci9GrlXI/dq5F6N3KsNWDJgyYAlA5YMWDJgyYAlA5YMWDJgyYAlA5YMWDJgyYAlA5YMWDJgyYAlA5YMWDJgyYAlA5YMWDJgyYAlA5YMWDJgyajZq0nNXk3q8zi2c69f76Ns516PfE5p7eRetwxkIp/TBzu511uOCzmQgqz9JrBEYInAEoElAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElYrgZboab4Wa4GW6Gm+HmuDlu/qT+bOdejyxy7dzrkYFM5EQWuXbu9ciBFKQin9Sf7dzrkU/qz3bu9ciJZAfAEoElAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrCEvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l5t517vW0Orc8B27nVLuZAD+Zw+2Ol73dKQjnymaqbVOWCn73XL4uTpe92y9pvCEoUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJao4+a4OW6Om+PmuDlujlvgFrgFboFb4Ba4BW6BW+AWuOWT+jOtzgHT6hywnXs90pCOfKZqptU5YDv3emRxcudej6x3eDv3euRzSms793qkI9kBsERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLDJYYLDFYYrDEYInBEoMlBksMltD3avS9Gn2vRt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3avS9Gn2vRt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3ajv3et8a9L0afa9m1TlgO/d6ZHHy5F63fE4f7PS9bqlIQz5TNbPqHLDT97rlRBYnDZYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxBK3xC1xS9wSt8QtcUvcErfEbeI2cZu4TdwmbhO3idvEbeI2n9SfWXUOmFXngO3c65GKNGRN1aw6B2znXo+cyOLkzr3eRNy51yOfU1rbudcjDVk7gNyrOSxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisIS+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7NXfuEuYl9L2aV+eA7dzrkRNZnPTqHLDT97qlIBX5nD6YV+eAeXVHm1d3tHl1R5vDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJb4xG3htnBbuC3cFm4Lt4Xbwm3hxjkOfa9G36vR92r0vRp9r0bfq9H3avS92s693nCM6hywqM4Bi+qOtqjPCVvU54QtqnPAojoHLKo72qI+J2xRnxO2nXu9ibhzr0fWLGjnXo9UZO0Acq8WsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAEvpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/VIrlLmJfQ92o793qzb+dej0zkRD6ntHb6XrccSEE+p7R2+l63dGQgE1m7O2BJwJKAJQFLApYELAlYErAkYEnAkoAlCUsSliQsSViSsCRhScKShCXJOQ59r0bfq9H3avS9Gn2vRt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3avS9Gn2vRt+r7dzrDceszwnbzr1uWd3RltUdbVnd0Zb1OWHbudcjHRnIRD5pFtu51y2tTml37vVIQdYOIPdqCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLKHv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7NfpeLRd3CfMS+l5t515v9u3c65GBTOSTZrHT9/olZ3VH26zuaDt9r3ZLRRrSkYGs3T1hyYQlE5ZMWDJhyYQlE5ZMWDJhyYQlE5ZMWDJhyYQlE5ZMWDJhyYQlE5ZMznHoezX6Xo2+V6Pv1eh7Nfpejb5Xo+/V6Hs1+l6Nvlej79XoezX6Xo2+V6Pv1eh7Nfpebedebzju3OsNvJ17PbI4Oas72mZ1R9vOvd7A27nXIw3pyEBWmmXnXo+snMLOvR45kLUDyL3ahCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYMmHJhCUTlkxYQt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3avS9Gn2vRt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3avS9Gn2vRt+r0fdq9L3aqgy90fdq9L3azr3e7Nu51yMdGcg6gT59r1sWJ1d1R9vpe7VbClKRhnRk7e4FSxYsWbBkwZIFSxYsWbBkwZIFSxYsWbBkwZIFSxYsWbBkwZIFSxYsWbBkcY5D36vR92r0vRp9r0bfq9H3avS9Gn2vRt+r0fdq9L0afa9G36vR92r0vRp9r0bfq9H3ajv3esNx515v4O3c65ETWZxc1R1tO/d6A2/nXo9UpCEdWam/nXs9sk6gd+51y8kOgCXkXm3BkgVLFixZsGTBkgVLFixZsGTBkgVLFixZsGTBkgVLFixZsGQVS/wqlvhVLHH6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1a/K0PvOvX5F/XznXo98Un++c69HGvJJ/flVLPGrWOJXscSvYolfxRK/iiV+FUv8Kpb4VSzxq1jil+FmuBluhpvj5rg5bo6b4+a4OW6Om+PmuAVugVvgFrgFboFb4Ba4BW6BW+KWuNWZsF91JuxXnQn7VWfCvnOvRz7Ppn7VmbBfdSbsV50J+1Vnwk7u1cm9OrlXJ/fq5F6d3KuTe3Vyr07u1cm9OrlXJ/fq5F6d3KuTe3Vyr07u1S9YMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmDJgCUDlgxYMmAJfa9O36vT9+r0vTp9r07fq9P36vS9On2vTt+rj/o8ju/c69f7KN+51yOfU1o/udctA5nI5/TBT+71lnYhB1KQtd8GLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUtG4pa4JW6JW+KWuCVuidvEbeI2n9Sf79zrkUWunXs9MpCJnMgi16i/Te4793qkIBX5pP58516PfFJ/vnOvR05k7QByry6wRGCJwBKBJQJLBJYILBFYIrBEYInAEoElAksElggsEVgisERgicASgSUCS+h7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el79Z17vW8Nqc4B37nXLf1CDuRz+uCn73VLQzrymaq5VOeAn77XLYuTp+91y9pvAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIhO3idvEbeI2cZu4Tdwmbgu3hdvCbeG2cFu4LdwWbgu3OsfxnXu9MajVOeBanQO+c69HGtKRz1TNtToHfOdejyxO7tzrkfUOb+dej3xOaX3nXo90ZO0AhSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisIS+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V9+5131rBG6BW3UO+M69HlmcPLnXLZ/TBz99r1sq0pDPVM21Ogf89L1uOZHFSYUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLLE6E3b6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5X37nXG45WnQNu1TngO/d6pCIN+UzV3KpzwHfu9ciJLE7u3OtNxJ17PfI5pfWdez3SkLUDyL26wRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGS+h7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xn9J3AK3wC1wS9wSt8QtcUvcErfELXFL3BK3idvEjXmJTe4S5iX0vbpV54Dv3OuRE1mctOoc8NP3uqUgFfmcPrhV54BbdUe7VXe0W3VHu8EShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDksclvjATXAT3AQ3wU1wE9wEN8FNcBPcFDfFTXFT3BQ3xY3ZK32vvnOvNxy9Ogfcq3PAvbqj3etzwu71OWH36hxwr84B9+qOdq/PCbvX54R9515vIu7c65E1C9q51yMVWTuA3Ks7LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwhL5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xv1qAy90/fq9L36zr3e7Nu51yMTOZHPKa2fvtctB1KQzymtn77XLR0ZyETW7g5YErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJcI5D36vT9+r0vTp9r07fq9P36vS9On2vTt+r0/fq9L06fa9O36vT9+r0vTp9r07fq9P36jv3esMx6nPCvnOvW1Z3tEd1R3tUd7RHfU7Yd+71SEcGMpFPmsV37nXLfE5pPerv4zi5Vyf36uRePWBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCX0vTp9r07fq9P36vS9On2vTt+r0/fq9L06fa9O36vT9+r0vTp9r07fq9P36vS9On2vTt+r0/fq9L06fa9O36vT9+r0vTp9r07fq2dl6J2+V6fv1Xfu9Wbfzr0eGchEPmkWP32vt6zuaM/qjvbT92q3VKQhHRnI2t0JSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSc5x6Ht1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xn3nXm847tzrDbydez2yOJnVHe1Z3dG+c6838Hbu9UhDOjKQT5rFd+71yMop7NzrkewAWELu1ROWJCxJWJKwJGFJwpIJSyYsmbBkwpIJSyYsmbBkwpIJSyYsmbBkwpIJS+h7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xn5Whd/penb5X37nXm30793qkIwNZJ9Cn73XL4uSs7mg/fa92S0Eq0pCOrN09YcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTM5x6Ht1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xn3nXm847tzrDbydez1yIouTq7qjfedeb+Dt3OuRijSkI5/Un+/c65F1Ar1zr1tW7tXJvTq5V1+wZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUvoe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V6fv1el7dfpenb5Xp+/V6Xt1+l6dvlen79Xpe3X6Xp2+V1/OXRKV+tu51yMr9bdzr0caslJ/C5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsznHoe3X6Xp2+V6fvNeh7Dfpe46oz4bjqTDiuOhOOq86E46q/TR5XnQnHVWfCcdWZcFx1JhxXnQkHudcg9xrkXoPca5B7DXKvQe41yL0Gudcg9xrkXoPca5B7DXKvQe41yL0Gude4BDfFTXFT3BQ3xU1xU9wUN8VNcTPcDDfDzXAz3Aw3w81wM9wMN8fNcXPcHDfHzXFz3Bw3x81xC9zq8zixc695356hyOeUNk7udctAJvI5fYiTe71lXsiBFOSz3+IqlsRVLImrWBJXsSSuYklcyX6b7LfJfiuWxDVxm7hN3CZuE7eJ28Rt4bZwW7gt3BZuC7eF28Jt4QZLBiwZsGTUOU6MOseJUec4MeocJ+h7Dfpeg77XoO816HsN+l5j516/3lLFzr0eWeQa9bfJY9TfJo9RPfQxqoc+Rv1t8hj1t8lj516PFKQin9Rf7NzrkU/qL3bu9ciJrB1A7jUGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLKHvNeh7Dfpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNXbudd8a1TkQO/e65byQA/mcPsTpe93SkI58pmoxqnMgTt/rlsXJ0/e6JfsNlgxYMmDJgCUDlgxYMmDJgCUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIgO3gdvAbeA2cBu4DdwGboKb4Ca4CW6Cm+AmuAlugpvgpk/qL6Q6B0KqcyB27vVIQzrymaqFVOdA7NzrkcXJnXs9st7h7dzrkc8pbezc65GOrB0gsERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElAksEltD3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3Gjv3um+NhdvCrToHYudejyxOntzrls/pQ5y+1y0VachnqhZanQNx+l63nMjipMIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUlqjiprgpboqb4qa4KW6Km+KmuBluhpvhZrgZboab4Wa4GW72pP5Cq3MgtDoHYudej1SkIZ+pWmh1DsTOvR45kcXJnXu9ibhzr0c+p7Sxc69HGrJ2ALnXUFiisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYQl9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GlYZ+qDvNeh7DavOgdi51yMnsjhp1TkQp+91S0Eq8jl9CKvOgbDqjg6r7uiw6o4OgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMcPNcXPcHDfHzXFz3Bw3x81xc9wCt8AtcAvcArfALXAL3OJJ/YVV50BYdQ6EVXd0WH1OOKw+JxxWnQNh1TkQVt3RYfU54bD6nHDs3OtNxJ17PbJmQTv3eiQ7AJaQew2DJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRhicMShyUOSxyW0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa/hlaEP+l6DvtfYudebfTv3emQiJ/I5pY3T97rlQAryOaWN0/e6pSMDmcja3Q5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCzxwC1wS9wSt8SN2St9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r7FzrzccvT4nHDv3umV1R4dXd3R4dUeH1+eEY+dej3RkIBP5pFli515vuXOv970e9fdxgtxrkHsNcq8RsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAEvpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO81wrlLmJfQ9xo793qzb+dejwxkIp80S5y+11tWd3REdUfH6Xu1WyrSkI4MZO3ugCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgTnOPS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa+xc683HHfu9Qbezr0eWZzM6o6OrO7o2LnXG3g793qkIR0ZyCfNEjv3euSTU4idez1yIGsHkHuNhCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSltD3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vQd9r0Pca9L0Gfa9B32vQ9xr0vQZ9r0Hfa9D3GvS9Bn2vkcldwryEvtfYudebfTv3eqQjA1kn0KfvdcviZFZ3dJy+1/tWnoJUpCEdWbs7YUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWTFgyYcmEJROWTFgyYcnkHIe+16DvNeh7Dfpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO81du71huPOvd7A27nXIyeyODmrOzp27vUG3s69HqlIQzrySf3Fzr0eWSfQO/e6ZeVeg9xrkHuNCUsmLJmwZMKSCUsmLJmwZMKSCUsmLJmwZMKSCUsmLJmwZMKSCUsmLJmwhL7XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO816HsN+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XoO816HuNOblL1pP6i517PfJJ/cXOvR5pyCf1FxOWTFgyYcmEJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLFiyYMmCJQuWLM5x6HsN+l6Dvteg7zXoew36XmNxJrw4E16cCS/OhFf9bfJYnAkvzoQXZ8KLM+HFmTC51yD3GuReg9xrkHsNcq9B7jXIvQa51yD3GuReg9xrkHsNcq9B7jXIvQa511iwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMES+l6Dvteg7zXoew36XoO+16DvNeh7Dfpeg77XWPV5nNi51/t91M69HlmntCf3umUgE1mnDyf3+kvmyb1uOZCCfPZbXsWSvIoleRVL8iqW5FUsyatYklexJK9iSV7FkrwGbgO3gdvAbeA2cBu4CW6Cm+AmuAlugpvgJrgJboKb4qa4KW6Km+KmuCluipviprgZboabPam/3LnXIx9y5VV/mzyv+tvkeVUPfV7VQ59X/W3yvOpvk+fOvR4pSEU+qb/cudcjn9Rf7tzrkRP57IAk95pXsSSvYklexZK8iiV5FUvyKpbkVSzJq1iSV+CWuCVuiVvilrglbolb4pa4JW4Tt4nbxG3iNnGbuE3cJm4Tt4nbwm3htnBbuC3cFm4Lt4Xbwq3OcZK+16TvNel7Tfpek77XpO816XvNnXu9b41RnQO5c69bjgs5kM/pQ56+1y0N6chnqpajOgfy9L1uWZw8fa9b1n4bsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZsGTAkgFLBiwZhpvhZrgZboab4Wa4GW6Om+PmuDlujpvj5rg5bo6b4xZP6i9HdQ7kqM6B3LnXIw3pyHjQNqpzIHfu9cji5M69Hvm8w8udez3yOaXNnXs90pFROwCWDFgyYMmAJQOWDFgyYMmAJQOWDFgyYMmAJQOWDFgyYMmAJQOWDFgyYMmAJQOWDFhC32vS95r0vSZ9r0nfa9L3mvS9Jn2vSd9r0vea9L0mfa9J32vS95r0vSZ9r0nfa9L3mvS9Jn2vSd9r0vea9L0mfa9J32vu3Ot9a9D3mvS9plTnQO7c65HFyZN73fI5fcjT97qlIg35TNVSqnMgT9/rlhNZnBRYIrBEYInAEoElAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBIJ3AK3wC1wC9wCt8AtcAvcArfELXFL3BK3xC1xS9wSt8Qtn9RfSnUOpFTnQO7c65GKNOQzVUupzoHcudcjJ7I4uXOvNxF37vXI55Q2d+71SHYALCH3mgJLBJYILFFYorBEYYnCEoUlCksUligsUViisERhicIShSUKSxSWKCyh7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XlMrQ5/0vSZ9r6nVOZA793rkRBYntToH8vS9bilIRT6nD6nVOZBa3dGp1R2dWt3RqbBEYYnCEoUlCksUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJZq4TdwmbhO3idvEbeI2cZu4Tdwmbgu3hdvCbeG2cFu4LdwWbutJ/aVW50BadQ6kVXd0Wn1OOK0+J5xWnQNp1TmQVt3RafU54bT6nHDu3OtNxJ17PfKZBeXOvR6pyNoB5F7TYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJfS9Jn2vSd9r0vea9L0mfa9J32vS95r0vSZ9r0nfa9L3mvS9Jn2vSd9r0vea9L0mfa9J32vS95r0vSZ9r0nfa9L3mvS9Jn2vSd9rWnCXMC+h7zV37vVmn0UgEzmRzyltnr7XLQdSkM8pbZ6+1y0dGchE1u42WGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgiS3c6hwn6XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe82de73h6PU54dy51y2rOzq9uqPTqzs6vT4nnDv3eqQjA5nIJ82SO/e6pT6ntOn193GS3GuSe01yr+mwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMS+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zV9cpcwL6HvNXfu9Wbfzr0eGchEPmmWPH2vt6zu6PTqjs7T93rfykuRhnRkINndsMRhScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkuAch77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zV37vWG48693sDbudcji5NR3dEZ1R2dO/d6A2/nXo80pCMD+aRZcudej3xyCrlzr0cOZO0Acq8ZsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAEvpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO81szL0Sd9r0veaO/d6s2/nXo90ZCCfE+g8fa9bFiezuqPz9L3aLQWpSEM6snZ3wpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJS5JzHPpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtfcudcbjjv3egNv516PnMjiZFZ3dO7c6w28nXs9UpGGdGQ8RNy51yPrBHrnXrdMdgAsIfeaCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLKHvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpec+de59eNuHOv0245kIJUpCEdGchETuQqqbgpboqb4qa4KW6Km+KmuCluhpvhZrgZ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556fRbR1brwajVej8Wo0Xu2I7ln/xquRzbfxasd0z3o2Xo3Gq9F4NRqvRuPVDuuedW68Go1Xo/FqB3bP2jZejcar0Xg1Gq9Oand//41Xo/FqNF6NxqvReDUar0bj1U7vnp/FauvceCWNV9J4JY1XO8O7118ar06Kd20dTX/5xrX1l2+Mrb984163HeV99Ghamv7yze118+rR3nQ0nU1/+eb+/m9eHX3zKmPr0bQ0rU1b0950NJ1Nz6YXWpuvNl9tvtp8tflq89Xmq81Xm682X2u+1nyt+VrzteZrzdearzVfa77WfL35evP15uvN15uvN19vvt58vfl6843mG803mm8032i+0Xyj+UbzjeZ78yr3PX/z6tFfvnPf/zevHq1NW9O3777nb149OpueTS/0bPtotn002z66efVoa9qbjqaz6dl027+r+a7mu5rvar6r+a7mu5rvar6r+S58d0j40aNpaVqbtqa96Wg6m55NN9/GK2280sarnRh+dPMdzXc039F8R/PdvLq5vYPDj77vZ91amtamrWlvGk7u/PCjZ9MLvXl19Ch+7hDxo2/f3Nqa9qbZR9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1XO2l8dDbfbL7ZfLP5ZvPN5pvNN5tvNt9svrP5zuY7m+9svrPdVzevNmN39PjR2fRsehVjd/z40aNpafr23Xvw5tWjveloOptu+7fxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvdjb5aGm+0nyl+UrzleYrzVearzRfab7SfLX5avPV5qvNV5uvNl9tvptXsvUslu688tGbV0ePpqVp3sfu0PKjveloOpvmfexOLh+9eZVbj6alafaRNV5Z45U1XlnjlTVeWeOVNV5Z45U1XlnjlTVeWeOVNV5Z45U1XlnjlTVeWeOVNV5Z45U1XlnjlTVeWeOVNV5Z45U1XlnjlTVeWePVDjc/uvnO5jub72y+s/mu5rua72q+q/mu5rua72q+q/mu5rvw3WHnR3Nf7bjz859r01a83YnnR0fT2fQs3u7U89Hjano0ffvOrbVpa9qbjqbhhjdeeeOVN15545U3XnnjlTdeeeOV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pmfTC9141fLto+XbhzReSeOVNF5J45U0XknjlTReSeOVNF5J45U0XknjlTReSeOVNF5J45U0XknjlTReSeOVNF5J45U0XknjlTReSeOVaPO15mvN15qvNV9rvtZ8rfla87Xma5XLHSfffjScPPn2o7Vpa9qbhpMn3370bJr3kyfffnTlcsfJtx9dudxx8u1He9Pso5ZvHy3fPqTxShqvpPFKGq+k8Uoar6TxShqvpPFKGq+k8Uoar6TxShqvpPFKGq+k8Uoar6TxShqvpPFKGq+k8Uoar6TxShqvpPFKGq+k8UpW8+V8cCjng0M5HxzK+eBQzgeHcj44lPPBoZwPDuV8cCjng0Ov5jua72i+o/mO5ju4r3a+fTN259sfnU3Ppuvcaux8+6NH09J0zUXHybcf7U1H09k0+1cbr7TxShuvtPFKG6+08Uobr7TxShuvtPFKG6+08Uobr7TxShuvtPFKG6+08Uobr7TxSq35evP15uvN15uvN19vvt58vfl68/XmG803mm8032i+0Xyj+UbzjcrljpNv1615H3vy7UePpqXpmouOk28/2puOprNp3seefPvWs3IF4+Tbj5am2z5qvNLGK2280sYrbbzSxittvNLGK2280sYrbbzSxittvNLGK2280sYra7yyxitrvLLGK2u8ssYra7yyxitrvLLGK2u8ssYra7yyxisbzXc039F8R/MdzXc0X2m+0nyl+UrzleYrzVearzRfab7SfLX5KveVafPV5qt1bjV2vv3R0XQ2XedWY+fbj7ar6dF0zUXHybcfbU1709E03LDGK2u8ssYra7yyxitrvLLGK2u8ssYra7yyxitrvLLGK2u8ssYra7yyxitrvLLGK4vmG803mm8232y+2Xyz+WbzzeabzTebbzbfbL6z+c7mO5vvbL6z+c7mOyuXO06+XbeeTcPnk28/ejTNXPTk24+2pr3paLpyX+Pk24+uXME4+fajR9Pso5ZvH9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njl2nwbr7zxyrX5avPV5qvNV5uvNl9rvtZ8rfla87Xma83Xmq813zZv9za/cm/3VZtfeZtf7Xz75u3Otz/am46m69xq7Hz7o+Hzzrc/us6txsm3H61NW9PeNNzw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tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u5z+9ty6zq3k9LcfnU3PpuvcSna+/dGjaWm65qIi9MnIybcfHU1n0+xfabySxitpvJLGK2m8ksYrabySxitpvJLGK2m8ksYrabySxitpvJLGK2m8ksYrabySxivJ5jub72y+s/nO5jub72y+s/nO5jub72y+q/mu5rua72q+q/mu5rua76pcrgh9MiL0ycjJtx89mpamay4qSp+MnHz70dF0Ns372JNv33pUrkBOvv1oaZp9pI1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeKWNV9p4pY1X2niljVfaeNX626X1t0vrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL62+X0t+97KZpvNF/6ZOT0tx8dTWfTdW4lO99+dF5Nj6ZrLipKn4ycfPvR3nQ0DTe08Uobr7TxShuvtPFKG6+08Uobr7TxShuvtPFKG6+08Uobr7TxShuvtPFKG6+08UpX813NlzyDtP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL626X1t0vrb5fW3y6tv11af7ucfLtsXXNRMfpk5OTbt5ar6dF0zUXF6JORk28/2puOpiv3JSfffnTlCuTk248eTbOPWr5drPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvrPGq9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL626X1t0vrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8uNtt91eZXrb9djD4ZOf3tR3vT0XSdW8nOtz8aPht/b0KMPhkx+mTE+HsTYvy9CTH+3oRY45U1XlnjlTVeeeOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeOVN15545U3XvlovqP5juY7mq80X2m+0nyl+UrzleYrzVearzRfab7afLX5avNt8/bW3y4n3y5b17mVOH0y4vy9CXH6GcTpZxCnT0acPhlx/t6EOP0M4vQzyMm329bZNPO6k2/fmny7tHy7tHy7eOOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeNV62+X1t8urb9dWn/7L918G69af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL626X1t4vzeRxp/e3S+tvl9LevrbVpa9qbrlyB7Hz7o2fT8Pnk2+fWo2lpWpu2puFGNF5F41U0XkXjVTReReNVNF5F41U0XkXjVTReReNVNF5F41U0XkXjVTReReNVNF5FOx9s/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL62+Xk22Vr5sAn3350Nj2bhs9BP4OcfPvR0rQ2bU1X7ktOvv3oyhXIybcf3fZR41XLt0s0XkXjVTReReNVNF5F41U0XkXjVTReReNVNF5F41U0XkXjVTReReNVNF5F41U0XrX+dmn97dL626X1t0vrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97dL62yX5PI60/nZp/e1y+tvX1tK0Nm1NV+5Ldr790dn0bJpzupNvP3o0LU1r03AjG6+y8Sobr7LxKhuvsvEqG6+y8Sobr7LxKhuvsvEqG6+y8Sobr7LxKhuvsvEqG6+ynQ+2/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dmn97XLy7bI153Qn3350NJ1Nz6Y5pzv59qNH09K0Nl25Lzn59qPJ55x8+9FtHzVetXy7ZONVNl5l41U2XmXjVTZeZeNVNl5l49VsvJqNV7PxajZezcar2Xg1G69m49VsvJqNV62/XVp/u7T+dmn97dL626X1t0vrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XVp/u7T+dpl8Hkdaf7u0/nY5/e1r69G0NK1Nk6PY+fZHR9PZNDmKk2/fmr83IZO/NyGTvzchs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/FqNl7NxqvZeDXb+WDrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLiffLluTozj59qO96Wg6myZHcfLtt178vQlZ/L0JWfy9CTn5dtvamiZHcfLtR2fT7KOWb5fVeLUar1bj1Wq8Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1Xq/FqNV6txqvVeLUar1bjVetvl9bfLq2/XVp/u7T+dmn97dL626X1t0vrb5fW3y6tv11af7u0/nZp/e3S+tul9bdL62+X1t8urb9dWn+7tP52af3t0vrbpfW3S+tvl9bfLq2/XZa3+8rJ5e58+6PJ5e58+6NH0+Ryd759ydZfvuv8b7zpaDqbnk0v9M2rR4+mpWltuvkmvxcWn3eWxeedZfF5Z1n8PXpZfN5ZFp93lsXnnWU1Xq3Gq9V4tRqvVuPVarxajVer8Wo1Xq12Ptj626X1t0vrb5fW3y6tv11af7u0/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv10v/h69Xvw9er34e/R68Xlnvfi8s178PXq9+Hv0evH36PXi88568ffo9YJXesErveCVXvBKL3ilF7zSC17pBa/0gld6wSu9rPla87Xma83Xmq81X2u+1ny9+Xrz9ebrzdebrzdfb77efL35evON5hvNN5pvNN9ovtF8o/lG843mG803m28232y+2Xyz+WbzzeabzTebbzbf2Xzp69OLvzehF+eDevH3JvTi703oxd+b0IvzQb34exN68fcm9OLvTejF+aBenA/qtdr+XW3/rrZ/V9u/q+3f1fZv49VovBqNV6PxqvW3a+tv19bfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/uw7+3oTufPuj4eTg703o4HxQB+eDOjgf1MHfm9DB35vQwfmgDs4HdXA+qIO/N6Gnv/3oep+jg783oYPzQW397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9d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nGe//ZsneZF/e25599tvbuRODvK7fvG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib88Grxq8avCqwasGrxq8aoveRe+id9G76N30bno3vZveTe+md9O76d30vnl79jdvz/7m7dnfvD2vv72f/Ntzy+tvv3mQJ3mRf3tueffbb27kTg7y73tsXn/7zb/fieT1t9+8yO86wt+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/727PCqw6sOrzq86vCqw6te9Ba9RW/RW/QWvUVv0Vv0Fr2D3kHvoHfQO+gd9A56B5+rQe+gd/72kPPut9/cyUH+7SFnf793zv5+75z9/d457377uR7f752zv987Z3+/d87+ng8m/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/zt2eFVh1cdXgW8CngV8Cre88GM93ww4z0fzHjz9ow3b8948/aMD72N3kZvo7fR2+ht9DZ6G72N3kZvp7fT23+/48t4v3fOeL93zni/d854v3fOeM8HM97vnTPe750z3u+dM977nTPe88G8/vY8Ocm/34nk9bffPMnvOsLfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz0DXuFvT/ztGfAq4FXAqxj0wquAVzHpnfROeie9k95J76R30jvpnfQuehe9i95F76J30bv4XC16F73rt4ecd7/95kbu5N8ecp799m8u8iD/9tzy7rff/Pic7/3Ome/5YOJvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE354JrxJeJbxKeJXwKuFVdno7vZ3eTm+nt9Pb6e30Br1Bb9Ab9Aa9QW/QG/QGvUFv0nt41U/+7bnl9bffnOQiD/Jvzy3vfvvNj8/53u+c+Z4P5vW358lBfvO662+/eZDfdYS/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3smvMLfnvjbM+FVwquEV7nohVcJr3LRu+nd9G56N72b3k3vpnfTu+ll3l7M24t5ezG/KuZX7LdnPf9Vst+e7Lfn3W/fJz8+13u/c9Z7v3Oe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/fabG7mTg/z7HV9df/vNv9+J1PW337zI7zrC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+9Cl7hby/87VXwquBVwati3l7wquBVMW8v5u3FvL2Ytxfz9mLeXszbi3l7MW8v5u3FvL2YXxXzq2J+VcyvivnV3W8/nyXmV+y3191v3yc3cicH+bfPUPXel1r13pda9d6XWvX2Gare+1Kr3vtSq977Uqve+1ILf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72GvBqwKsBrwa8GvBqwKvB88HB88HB88HB88HBvH0wbx/M2wfz9sG8fTBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/M28d7X2pdf3ucnOQiD/Ikv+d0470vtcZ7X2qN977UGu99qXX97Xlykn+/E6nx3pda470vtfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87TXgFf72wt9eA14NeDXg1WDePuDVgFeDeftg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mLcP5leD+dVgfjWYX7HfXne//XyWmF+x317jvS+15ntfas33vtS6++03//Yoar73pdZ870uts9/+zb89iprvfak13/tSa773pdbdb7/5cQN/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LfXhFcTXk14NeHVhFcTXk2eD06eD06eD06eD07m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2Tefv3t/eS3RzHf+1Jrvvel1nzvS627337z26OY732pNd/7Umu+96XW9bff/PsdX11/+81vj2K+96XW9bff/K4j/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjba8Ir/O2Fv70mvJrwasKrybx9wqsJrybz9sW8fTFvX8zbF/P2xbx9MW9fzNsX8/bFvH0xb1/Mrxbzq8X8ajG/Yr+9zn77rpP/9oH3yZO8yPvl40O+uZE7OchJLjK9nd5Ob6c36A16g96gN+gNeoPeoDfoDXqT3qQ36U16k96kN+lNepPepLfo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eDXg1YBXg+eDg+eDg+eDg+eDk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN4+mbef/fbD5LPffhh79tu/eZEfn89++ze/PYqz3/7NQU5ykd8exdlv/+a3R3H222+OD/ldRxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEV5N5+4RXE15N5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN4+mV9N5leT+dVkfjWZX5399vtZOvsM51r449U3/3HyfM7/ePXNSf7j5Pncvv32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99rUZvo7fR2+ht9DZ6G72d3k7v81+t9fxXaz3/1VrPf7XOfvs3/32u2smLvF9+/qu1nv9qsd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vta016J72T3kXvmbfHyb/99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fd399psfJ9lvX+y3L/bb137+q8V++2K/fbHfvthvX/v5rxb77evut9/820Ne7Levu99+87uO2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX772pvezefqzNvr5P3N++y3f3Mj9y9j99lv/+YkF/mvN0+e5EXeL7cP+Xf97s/j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76R30jvpnfROeie9k95J76R30bvoXfQuehe9i94zb18n/57Ttetvv/nxOfaH3Mi/53Tt7rffnOQiD/L8cfjut9+8f9fL3W+/uZHfdZTwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEV8/f/i/TC6+ev/1fpjfoDXqD3qA36U16k96kN+llfpXMr5L5VTK/SuZX199+PkvMr5L51fW318lJLvIg//Yo2vW33/z4nOND/u1RtOtvvznISS7y40bCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvctG76F30Lno3vZveTe+md9O76d30bno3vczbi3l7MW8v5u3FvL2Yt19/+zr5t0fRrr/95kV+fK72If/2KNrdb785yEku8vhx+O633/zbo2h3v/3k/iG/66jgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFr4p5e8GrglfFvL2Ytxfz9mLeXszbi3l7MW8v5u3FvL2Ytxfz9mJ+VcyvivlVMb8q5lfX334+S8fPcK6F42e4+W8v93zOj5/h5iT/663zuX0+mVbPJ9Pq+WRaPT9Dq+dnaPX8DK2en6HV8zO0en6GVs/P0GrRu+hd9C56N72b3k3vpnfTu+nd9G56N73v985tvN87t/F+79zG+71zG+/3zm283zu38X7v3Mb7vXMb7/fObbzfO7fxobfR2+htv9/htrPf/s1JLvIg/36H285++zfvl8/vcW7+6x0n//bMG/vtjf32xn57Y7+9sd/e2G9v7Lc39tsb++2N/fbGfntjv72x397Yb2/stzf229sIepPepDfpTXqT3qQ36U16k96kt+gteoveorfoLXqL3qK36C16B72D3kHvoHfQO+gd9A56B72D3knv+/1gO/vtf7/bame//Zv/eNVPLvIgT/Lf77zONfLHq5v/ePXNjdzJXL/wasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJqN3kZvo7fR2+ht9DZ6G72d3k7v+b1znhzkx8nrb795kCd5kR8nr7/95kbu5CDnj6XX337z+F0L199+8yK/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/O1x/e158v4xdj+fTOz3vonY730Tsd/7JmI/n0zs55OJ/d43Efu9byL2e99EXH/7H4evv/3mN6+7/vabg/yuow2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDK/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztib898bfn2W//+ywl/vbE355nv/2Pt3n22795khd5f3mbZ7/9mxu5k//4/Dk5yUUe5En+cSM/j1f5ebzKz+NVfh6v8vN4lZ/Hq/w8XuXn8So/j1f56fR2eoPeoDfoDXqD3qA36A16g96gN+lNepPepDfpTXqT3qQ36U16i96it+gteoveorfoPfP2PPk3B87rbz/5vW8iP+99E/l575vI62+fJye5yIM8yevL4bz+9pPP/OpcL+/9g/mZXEeT62hyHT1e5efxKj+PV/l5vMrP5PpdXL+L6/fxKj+L3kXvonfRu+hd9C56N72b3k3vpnfTu+nd9G56N73wCn974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xt+fZbz+fJfztib89z3774e3Zb//mQZ7k9ePt2W+/+b1vItt730Se/fbD2LPf/s1JLvIgP240eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXregteoveQe+gd9A76B30DnoHvYPeQe+gd9I76Z30TnonvZPeM2/Pk3/P6fL6229+fG7vfRPZ3vsm8vrb58lBTnKRB3n+OHz97Tfvd73sD5nrCF41eNXgVYNXDV41eNXgVYNXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV7hb0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/Pc9++/ks4W9P/O159tsPb89++zcXeZB/exR59tu/+fG5v/dN5NlvP4w9++3fHOQkF/lxo8OrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOrwqsOrDq86vOqT3knvpHfSu+hd9C56F72L3kXvonfRu+hd9G56N72b3k3vpvfM2/Pk3x5FXn/7zYv8+BzvfRN5/e3z5E4OcpKLPH4cvv72m397FHn97Se/901kwKuAVwGvAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbzC35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e5799vtZOvsMeXIj/3HyfM7/ePXNSf7j5PncPp9MxvPJZDyfTMbzM2Q8P0PG8zNkPD9DxvMzZDw/Q8bzM2RMeie9k95J76J30bvoXfQuehe9i95F76J30bvp3fRueje9m95N76Z307vpfb93zny/d858v3fOs9/+9/uCPPvt35zkIg/y3+eqnbzI++Xz/ermv8/z5+Tfnnmy357styf77cl+e7Lfnuy3J/vtyX57st+e7Lcn++3Jfnuy357styf77cl+e2anN+gNeoPeoDfoDXqD3qA36A16k96kN+lNepPepDfpTXqT3qS36C16i96it+gteoveorfoLXoHve/3g3n97XVykP96x8lFHuRJ/us918iZt5985u03N3Inv+s34VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4JXBa/q+Rmynp8h6/kZsp6fIfG3J/72xN+e+NsTf3vib8/rb18nB/lx8vrbbx7kSV7kx8m7335zI3dykPPH0rvffvP4XQt3v/3mRX7XUcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KniFvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz2vv/18lp5PJq+//eQzb7+5kfuPsdfffnOSi/zXe67B55PJ62+/+fH5+ttv5vqFVwWvCl4VvCp4VfCq4FXBqwGvBrwa8GrAqwGvBrwa8GrAqwGvBrwa8GrAq9HobfQ2ehu9jd5Gb6O30dvp7fR2eju9nd5Ob6e309vp7fSe3zuvk9uPpeP5ZPL6229OcpHHj6Xj+WTy7rff/Ph899tvft9j7377zfG7Lu5++81FftfRgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXuFvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+Jvz+tvP5+lTe+m9/lk8vrbb358vv72m9uPt9fffnOQk/zXmycP8iQv8uPzhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVDHqD3qA36A16g96gN+gNeoPepDfpTXqT3qQ36U16k96k9/gZ/pg8n08m5/PJ5PW33xzkJNePsfP5ZPLut9+8yI/Pd7/9c3Ij99/1cvfbb07yu44mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa/wtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfntffHifTy/xqPZ9MXn/7zYv8+LyeTyavv/3mTg7yX2+eXORBnuRFftxY8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvVtJb9Ba9RW/RW/QWvUVv0Vv0Fr2D3kHvoHfQO+gd9DJvx9+e19++Tt4/xq7nk8n13jeR671vItd730Su55PJ9Xwyud77JvLut9+8yPvH4bvffvOb19399pu5juDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teHVhlcbXm14teEV/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742/P62+NkeplfXX97nTzIk7zI+8fb62+/uZE7+a83T05ykQd5kh83Nrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDq83zQfztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib89r799nfzmwNfffvJ730Tu976J3O99E3n329vJSS7yIE/y+nH47rf/y3X32+PkRu7k33VUn8er+jxe1efxqj6PV/V5vKrP41V9Hq/q83hVn8er+jR6G72N3kZvo7fR2+jt9HZ6O72d3k5vp7fT2+nt9HZ6g96gN+gNeoPeoDfoDXqD3qA36U16k96kN+lNepPepDfpTXqL3uJzVfQWvWd+VScXeZAneX15W9fffvJ730R93vsm6vrb8+QgJ7nIg/zjRn0er+rzeFWfx6v6PF7V5/GqPo9X9Xm8qs/jVX0er+oz6Z30TnoXvYveRe+id9G76F30LnoXvYveTe+md9O76d30bno3vZveTe+btxf+9sLfXvjbC3974W8v/O11/e3r5N9zurr+9pv3y+99E9Xe+ybq7re3k4Oc5CIP8vxx+O6337x/18vdb7+5kd911OBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV4hb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/va6/vbzWZr0Tnrnb4+irr/95iIP8m+Poq6//ebH5/beN1HX336ux9XJQU5ykR83Grxq8KrBqwavGrxq8KrBqwavGrxq8KrBqwavGrzq8KrDqw6vOrzq8KrDq/6eDxb+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXtffvk7+7VHU9bffvMiPz/29b6Lufns7uZODnOQijx+H7377zb89irr77Se/901Uh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1f42wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fvr+tvP5+l42c418LxM9z8t5d7PufHz3Bzkv/11vncPp9M9eeTqf58MtWfn6Hi+Rkqnp+h4vkZKp6foeL5GSqen6Hi+Rkqnp+h4vkZKj70NnobvY3eRm+jt9Hb6G30NnobvZ3eTm+nt9Pb6e30dno7vZ3eTm/QG/TG73e4dfbbvznJRR7k3+9w6+y3f/N++fwe5+a/3nHyb8+82G8v9tuL/fZiv73Yby/224v99mK/vdhvL/bbi/32Yr+92G8v9tuL/fZiv72i6B30DnoHvYPeQe+gd9A76B30DnonvZPeSe+kd9I76Z30TnonvZPeRe+id9G76F30LnoXvYveRe+i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M66//eYkF3n8WJrPJzPufvvNj893v/3m9z327rffHL/r4u6331zkdx0VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCV/jbB/72gb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbB/72gb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbx/W3n89S0Vv0Pp/MuP72mx+fr7/95vbj7fW33xzkJP/15smDPMmL/Phc8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXtend9G56N72b3k3vpnfTu+l9foaBv33gbx/42wf+9oG/feBvH/jbB/72gb99XH/7H5PH88mM8Xwy4/rbbw5ykuvH2PF8MuPut9+8yI/Pd7/9c3Ij99/1cvfbb07yu44GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa/wtw/87QN/+8DfPvC3D/ztA3/7wN8+8LcP/O0Df/vA3z7wtw/87QN/+8DfPvC3D/ztA3/7wN8+8LcP/O0Df/vA3z7wtw/87QN/+7j+9vNZYn6Fv32M55MZ199+8yI/Po/nkxnX335zJwf5r/dcj88nM8Z738QY730TY7z3TYwBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwqsJrya8mvBqwqsJrya8mvBqwqv5obfR2+ht9DZ6G72N3kZvo7fR2+jt9HZ6O72d3k5vp5d5O/72cf3t6+T9Y+x8Ppkx3/smxnzvmxjzvW9izOeTGfP5ZMZ875sY871vYsz3volx99v/OHz3229+87q7335zkN91NOHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14hb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbB/72gb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbB/72gb994G8f+NvH9befzxLzK/zt4/rb6+RBnuRF3j/eXn/7zY3cyX+9eXKSizzIk/y4seDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi14teDVglcLXi2eD+JvH/jbB/72gb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbB/72gb994G8f+NvH9bevk98c+PrbT37vmxjrvW9irPe+iXH329vJSS7yIE/y+nH47reffHgVJzdyJ7/raMGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwCn/7wN8+8LcP/O0Df/vA3z7wtw/87QN/+8DfPvC3D/ztA3/7wN8+8LcP/O0Df/vA3z7wtw/87QN/+8DfPvC3D/ztA3/7wN8+8LeP62+Pk+llfnX97XVykQd5ktePt9fffvJ738TY730T4/rb8+QgJ7nIg/y4seHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm2eD+JvH/jbB/72gb994G8f+NsH/vaBv33gbx/42wf+9oG/feBvH/jbB/72gb994G8f+NvH9bevk99zuutvv/nxeb/3TYz93jcx7n57OznISS7yIM8fh+9++837XS/rQ+Y6glcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlf78Wp+Hq/m5/Fqfh6vJv72ib994m+f+Nsn/vaJv33ib5/42yf+9om/feJvn/jbJ/72ib994m+f+Nsn/vaJv33ib5/42yf+9om/feJvn/jbJ/72ib994m+f198eJ9Mb9MZvj2Jef/vNRR7k3x7FvP72m/fL730T8/rb8+RODnKSi/zjxvw8Xs3P49X8PF7Nz+PV/Dxezc/j1fw8Xs3P49X8PF7NT9Fb9Ba9Re+gd9A76B30DnoHvYPeQe+gd9A76Z30TnonvZPeSe+kd9I76Z30LnoXvYveRe+i98zb18m/PYp5/e03L/J++b1vYt799nZyJwc5yUUeXw7Pu99+82+PYt799r/c3vsmZoNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNX+Nsn/vaJv33ib5/42yf+9om/feJvn/jbJ/72ib994m+f+Nsn/vaJv33ib5/42yf+9om/feJvn/jbJ/72ib994m+f+Nsn/vaJv31ef/v5LB0/wzq5kf/2cvfJQU7yv94/X+5szycz2/PJzPZ8MrM9P8Nsz88w2/MzzPb8DLM9P8Nsz88w2/MzzDboHfQOege9k95J76R30jvpnfROeie9k95J76J30bvoXfQuehe9i95F76J30bvp3fTu3+9w59lv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eXKQk1zkQZ4/Dl9/+837d71cf/vNjfyuow2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDq/+aursdCZbssM7vwmteVOwdv34VQxAkWTYIEJJASwYMg+/u6YrM2t8NsYg5mH06snJ1RPaqnIOvDr46+Orgq4OvDr46+OrgK97fvnh/++L97Yv3ty/e3754f/vi/e2L97cv3t++eH/74v3ti/e3L97fvnh/++L97Yv3ty/e3754f/vi/e2L97cv3t++eH/74v3ti/e3L97fvnh/++L97ev27c9niedXvL993b79+vb27S8PeMLVUdy+/eXy86n/vYl1+/br2Nu3v5xwhwdc3jj46uCrg68Ovjr46uCrg68Ovjr46uCrg68Ovjr46uCrg68Ovjr46uCrg68Ofx/k/e2L97cv3t++eX/75v3tm/e3b97fvnl/++b97Zv3t2/e3755f/vm/e2b97dv3t++eX/75v3tm/e37+f97f3yr6PYz/vbH97wKa7/vYn9vL99XQ444Q4PeL4e3s/72x/+dRT7eX/75frfm9if8tX+lK/2p3y1P+Wr/Slf7U/5an/KV/tTvtqf8tX+lK/2pzO3M7cztzO3M7cztzO3M7czdzB3MHcwdzB3MHcwdzB3MHcwdzB3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MXcxdzF3MXcxdzF3MXfxufr6asTlBgec8N/ccT//X1+9POG/ufP55zf8N3fe++7rq5cbHHDCHR7whBe84Zp7+/Y5Lzc44IS/c8flAU94wRs+xV9fvfyduy4HnHCHBzzhBW/4FH999TJzg7nB3GBuMDeYG8wN5gZzk7nJ3GRuMjeZm8xN5iZzk7nJ3M7cztzO3M7cztzO3M7cztzO3M7cwdzB3K+v1ufy39wVlzs84AkvmLlfX637ef76at3P1ddXLweccK/P9tdXL094wXyeJ5/nxef566uXA2adF+u8WOfFOi/WefHzLtZ5s85fXz1r+/XVs1abdd6s82adN+v89dXKy8zdzP366lnzr69eDph1/vrq5QFPmHW+vnr4/Djw1e3b79revv3lhDs84Frn27e/vOH6eW/f/nKDA064/67F7dvv2t6+/eUFb/gUf311r8Xt219mLr66fftd/9u3vzzh9Vvz27e/fIrzA9fvhdu3v5xwh1nnnPCCN1z3UeCrwFeBrwJf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vj0mvqJvD/r2oG8P+vagbw/69qBvj8nz9omv6NuDvj3o24O+PSbnwcnz9sn+avK8feKryXnw6dsfLl9NfDU5D96+/WF8NfHV5Dx4+/aXWWd8NfHV5Dw4ed5O3x707UHfHvTtMfHVxFeT8+Dkefus7zsHfXtMfDXx1eQ8OHnePjkPPn37w8wdzK3+Kmb1V/H07Zfv/ur+87M8Oau/iln9Vczqr+L27S//+quY1V/FrP4qbt/+cPVXcfv2l7mPFvcRvqJvj4mvJr6a+GpyHpyb67u5vrueq0x8NfHV5Dw4N/fR5j7CVxNf0bcHfXvQt8fEV/TtQd8e9O0x8RV9e9C3/+Mx4QducMD1eaZvD/r2f/CEF7zhWueFrxb7K/r2oG8P+vagb4+Fr+jbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+PejbY+OrzXlw87x946uNrzbnwc3z9o2vNr7anAc3z9s3vtr4auOrzXmQvj02vqJvD/r2oG8P+vagbw/69qBvj83z9o2v6NuDvj3o24O+PTbnwc3z9s3+avO8feOrzXnw6dsfLl9tfLU5D96+/eXy1cZXm/Pg7dtfrnU++Orgq8N58PC8nb496NuDvj3o2+Pgq4OvDufBw/P2U993Dvr2OPjq4KvDefDwvP1wHnz69oeZG8ylvzr0V0/f/vB3nZ9/fvPfWf3Vob869Fe3b3+5+qtDf3Xor27f/nL1V7dvf7nuo6dvf5h1xlcHXx18dfDV4Tx46K+evv3heq5y8NXBV4fz4KG/evr2h5mLr+jbg7496Nvj4Cv69qBvD/r2OPiKvj3o24O+Pejb4+Ar+vagbw/69qBvD/r2oG8P+vY4+Oqwv6JvD/r2oG8P+vY4+Iq+Pejbg7496NuDvj3o24O+Pejbg7496NuDvj3o24O+Pejbg7496NuTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+Penbk7496duTvj3p25O+PRu+anUezFbP27Phq4avWp0Hs9Xz9mz4quGrVufBbPW8PRu+aviq4atW58Gkb8+Gr+jbk7496duTvj3p25O+Penbs9Xz9mz4ir496duTvj3p27PVeTBbPW/PNpg7mIuvWp0H8+nbL+Orhq9anQfz9u0vl68avmp1Hszbt7/MOuOrhq/a4j5a3Ef4ir496duTvj0bvmr4qi2u7+b61vedk749G75q+Kpt7qPNfVTnwXz69oeZe5hb/VW26q/y6dsf/q7z88+XJ1v1V9mqv8pW/VXevv1yVH+VUf1VRvVXefv2l3/9Vd6+/eW6j56+/eFaZ/r2DHwV+CrwVdR5MKP6q4x6H3I+ffv9WfBV4Kuo82BG9Vf59O0PMxdf0bcnfXvSt2fgK/r2pG9P+vYMfEXfnvTtSd+e9O0Z+Iq+Penbk7496duTvj3p25O+PQNfBfsr+vakb0/69qRvz8BX9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O1J35707UnfnvTtSd+e9O2Z+Co5D+bhPsJXia+S82Ae7iN8lfgqOQ/2et6eHV91fNXxVec8SN+evL896duTvj3p25O+Penbk7496duz1/P27PiKvj3p25O+Penbs3Me7PW8PTv7qx7MxVed8+DTtz9cvur4qnMefN7f/nD5quOrznnw9u0vs874quOrznmw1/P2pG9P+vakb0/69uz4quOrznmwd65vfd856duz46uOrzrnwV7P27NzHnz69oeZO5hb/VX26q/y6dsf/q7z/ednebJXf5W9+qvs1V/l7dtf/vVX2au/yl79Vd6+/eX297/PMi7/zV357//8T//Pf/q3f/lP//lf/+v//U//2//3j//3//xf/+2//M9/+e//7fl//+f/+z/e/+Q//9u//Ou//sv/9R//x7/99//yX/+P//Vv//U//ut//y9//9k/ff7+zz/+5f/33v959P/wz//0dxf97/84z//zP87l/+Hf//3f/8O///8=", + "debug_symbols": "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58r+XNmfK8dz5XiuHM+V47lyPFeO58rxXDmeK8dz5XiunM+V87lyPlfO58r5XDmfK+dz5XyunM+V87nyfK48nyvP58rzufJ8rjyfK8/nyvO58nyuPJ8rr+fK67nyeq68niuv58rrufJ6rryeK6/nyuu58riuUqOUlNJSVspLRaksNUuVxyiPUR6jPEZ5jPIY5TFuD/1SWWo++3Pvyy+1N+atRil5tu/em7eyUl4qSj37c9QGHbIepVepUUpKaSkr5aWiVHloeWh5WHlYeVh5WHlYeVh5WHlYeVh5WHl4eXh5eHl4eXh5eHl4eXh5eHl4eUR5RHlEeUR5RHlEecTtkV8qS90eX78jYj0qr1KjlJR6qDn2dr6Vl4pSWWoeqo5cj9qb+v5dMEpJqbp3a2OP2tmjtvaovT1qc4/a3aO296j9PWqDj9rho7b4qD0+apOP2uWjtvmofS61z6X2udQ+l9rnUvtcap9L7XOpfS61z6X2udQ+l9rnUvtcap9L7XOpfS6jPEZ5jPIY5SHlIeUh5SHlIeUh5SHlIeUh5SHloeWhz89c9i/j+9e8lrJSXup5EyGapWaph1di9UbC6p2ESSktZaXq3UTtc6l9LrXPpfa51D6X2udS+1xqn4vzhqU8ap9L7XOpfS61z6X2udQ+l9rnUvtcap9L8K6oPKI8ojyiPLI8sjyyPLI8sjyyPJK3XuWR5ZHlMctjlscsj1ke0w6RZPohjcwolaVmqYdXsp63eLJGKSmlpazU8z5PVpTK557c+/xW6yitfa61z7X2udY+19rnWvtca59r7XOtfa61z7X2udY+19rnWvtca59r7XOtfa61z7X2udY+19rnWvtca59r7XOtfa61z7X2udY+19rnWvtca5+rloeWh5aHloeWB2+8eefNW+9676315lvr3bfW22+t999ab8C13oFrvQXXeg+u9vzMtd6Fa70N1/0+XL+UlNJSVup55lGPUllqlnqeezSuUqOUlNJSzx7U2uda+1xrn2vtc619rrXPtfa51j7X2uda+1xrn2vtc619rrXPtfa51j7X2uda+1xrn+ssj1keszxmeczymOWxymOVxyqPVR6rPFZ5rPJY5bHKYz0edl2lRikppYdSdtmhj11eKkplqVnqeSK1cZUapaSUlnoeS214qTj3qY0sNUvVs2ntcxOeTuvxtPa51T632udW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gyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYgu3OsdJ+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XnPnXm84en1OOHfudcvqjk6v7uj06o5Or88J5869HunIQCbySbPkzr1uqc8pbXr9fZwk95rkXpPcazoscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rCEvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe02f3CXMS+h7zZ17vdm3c69HBjKRT5olT9/rLas7Or26o/P0vd638lKkIR0ZSHY3LHFYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJDjHoe816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe82de73huHOvN/B27vXI4mRUd3RGdUfnzr3ewNu51yMN6chAPmmW3LnXI5+cQu7c65EDWTuA3GsGLAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwhL7XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XvNrAx90vea9L3mzr3e7Nu51yMdGcjnBDpP3+uWxcms7ug8fa92S0Eq0pCOrN2dsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkuQch77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zV37vWG48693sDbudcjJ7I4mdUdnTv3egNv516PVKQhHRkPEXfu9cg6gd651y2THQBLyL1mwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJS+h7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77XpO816XtN+l6Tvtek7zXpe036XpO+16TvNel7Tfpek77X3LnX+XUj7tzrtFsOpCAVaUhHBjKRE7lKKm6Km+KmuCluipviprgpboqb4Wa4GW6Gm+FmuBluhpvhZrg5bo6b4+a4OW6Om+PmuN0smeuWq+TNkiMHUpC43SxZ94/7ZsmRgUzkl9vSW66SN0uOHMgvtzVuqUhDOjKQvLZkJZOVnKzkZCUnKzl5bZOVvFky7xv8Zsleh5slR7KSk5VcrOTNknXdEreF22IlFyu5WMnFSt4sOXI9cude7+XbudcjBanIWsmdez0ykImcyFrJnXs9ciAFqUhDOjKQ+azvzr3ea7Zzr1vKhRxIQeqzvjv3eiRusGTnXveayUSykjdLjhxIQbKSN0uOdGQgWUllJW+WbHmz5MiBZCVhyYIlC5YsWLJgyYIlC5bs3OteamclnZXcLNnSkI6MWt+bJUfi5rgFKxmsZLCSN0uONKQjWcnNki0nsliyc697+ZKVhCULlixYsnOv+/tNVhKWLFiyYMmCJQuWLFiyc697qScrOVlJWLJgyYIlO/e61/dmyZG4wZKde91rBksWLFmwZMGSBUt27vVrJedVLJlXsWRexZK5c69fyzevYsm8iiXzKpbMq1gyd+716/udV7FkXsWSeRVL5lUsmVexZF7FknkVS+bOvX4t9dy516/lm1exZF7FknkVS+ZVLJk79/q1vvMqlsxLcBPc5FnJeRVL5lUsmVexZF7FknkVS+bOve6VLJbMq1gyr2LJ3LnXvXzKShZL5lUsmVexZF7GShoraayk8dqM11YsmVexZF7Gz22z5F5qZyWdlSyWzKtYMq9iydy5172+xZJ5OW6Om7OSwUoGK1ksmVexZF7Fkrlzr3sliyXzKpbMq1gyd+51L1+yksWSeRVL5pXsgGQlk5VMVjJ5bclrS3bAZAdMfm6bJfdST1ZyspLFknkVS+Y12QE3S/b6Fkvmzr1ui4XbzZLlt7xfW9zyl9uvE5Fb+pe8F+qLJY9M5ESuR96510cOpCAVaUhH3m5+y0RO5Co5bje75UAKUpG3W9zSkYFM5ESuknIhv9zk/n6/WPJIRRrSkV9uIrdM5Jeb3N/kF0uO/GLJIwdSkIo0pCMDmUjcFDfDzXAz3Aw3w81wM9wMN8PNcHPcHDfHzXFz3Bw3x81xc9wct8AtcAvcArfALXAL3AK3wC1wS9wSt8QtcUvcErfELW+3+5bLiWQHzAs5kIJkB0xDOjKQiWQHTHbAYgesgRSkItlvi/222G+L/bZwW+Um14UcSEEq0pCODGQiJxK3gdvAbeA2cIMlAksElggsEVgisERgyZ17fSRugpvgJrgJbpsl1y0n8r4nv2AumyVbDqQgFVnkEnVkIBM5kevhmWyWbHm7+S0FqcjaAQJLBJYILBFYIrBEYInAEoElAksElggsEVgisERgicASgSUCSwSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElkrglbonbxG3iNnGbuE3cJm4Tt4nbxG3itnBbuC3ukpslN/Du3OsjHRnIeqcgayKLk3pdyHqnoJcgFWlIR9Z+U1iisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCkjv3+kjcBDfFTXFT3BQ3xU1xU9wUN8VNcTPcDDfDzXAz3DZLrlvGgzbdLNlyIouT6hey3uGpC1KRhnRkvcNTT+R87mrdLLnlZsmWtQMUligsUViisERhicIShSUKSxSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisERhicISXbgt3BZuC7eF28Jt4bbK7c69PnIgBalIQzoykImcyLpL7tzr+U8HbjdLbvbduddHGtKR9URlI5ETWZw0qScqk4EUpCINWbvbYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJXfu9ZG4GW6Gm+HmuDlujpvj5rg5bo6b4+a4OW6BW+AWuAVumyXXLf0BnkUgEzmRxUnbLNFbDqQgFWlIf4hoGcisez0nkh0ASwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVjisMRhicMShyUOSxyWOCxxWOKwxC/cYInDEh+4DdwGbgO3gdvAbeA2cBPcBDfBTXAT3AQ3wU1wk7pLnHmJMy/x/YwTtxSkIg3pD/tcA5nIibz3221hF3IgBanI2t0OSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgsuXOvj8QtcAvcArfALXFL3BK3xC1xS9wSt8QtcUvcJm4Tt4nbZsl1S3uA59ORgUzkRK4HeL4u5EAKUpH2ENGXI6Pu9ZVIdgAsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSYPYasCRgSTB7DWavwew1mL0Gs9dg9hrMXoPZazB7DWavwew1mL0Gs9dgXhLMS4J5SVjdJcG8JJiXxH7GiVsOpCAVaQ/7wh0ZyETe+21bFCcjLuRACrJ2d8CSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUti4jZxm7hN3CZuzF6D2Wswew1mr8HsNZi9BrPXYPYazF6D2Wswew1mr8nsNZm95mbJdcuaGOZlSEcGMpE1McyrOJnjQg6kIPUhYg5D+nOv5whkImsHJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJMntNWJKwJJm9JrPXZPaazF6T2Wsye01mr8nsNZm9JrPXZPaazEuSeUkyL0nmJcm8JIO7hHlJMi/J/Yxz3+t5IQdSkPqwL9OQjgxknaxkTmRxMueFHMja3QlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSyYsmbBkco4zOceZnONMznEms9fJ7HUye53MXiez18nsdTJ7ncxeJ7PXyex1MnudzF4ns9fJ7HUye52bJdct62RliiIN6chA1snKlIksTk69kAMpDxGnKtKee32qIwNZO2DCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGTCkglLJiyZsGQye52wZMKSyex1MnudzF4ns9fJ7HUye53MXiez18nsdTJ7ncxeJ/OSybxkMi+ZzEsm85I5uUuYl0zmJXPWCfScxcm5LuRA1gn0XIo0pCPrBHquRE5kcXJdF7J294IlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLI4x1mc4yzOcRbnOIvZ62L2upi9Lmavi9nrYva6mL0uZq+L2eti9rqYvS5mr4vZ62L2upi9rs2S65Z1Ar1MkIo0pCPrBHpZIieyOLn8Qo6HiMsFWSfQyw3pyNoBC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIli9nrgiULlixmr4vZ62L2upi9Lmavi9nrYva6mL0uZq+L2eti9rpqXrKumpesq+Yl66p5ybpqXrKu67lL1p17/TVtvGUgv9x03HIiV8mbJSq3/HJTvaUgFWlIRwYykRO5St4sORI3wU1wE9wEN8FNcBPcBDfFTXFT3BQ3xU1xU9wUN8VNcTPcDDfDzXAz3Aw3w+1mic5bTuQqebPkyIH8crP7J3+z5EhDOvJ2W7f8crP7JrhZcuQqebPkyIEUpCIN6chA4ha4BW6JW+KWuCVuiVvilrglbolb4jZxm7hN3CZuE7eJ28Rt4jZxm7gt3BZuC7eF28Jt4bZwW7gt3Fa57dzrkQMpSEUa0pG327jl7Wa3nMjb7QtBO/d65EAK8nbTWxrSkYFMZO23AUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSnXs9EjfDzXFz3Bw3x81xc9wct5slmrecyCLXzr0eOZCCVGSRa+dejwxkIidyPWjbudcjR93KmyVbKpIdAEsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsGLBmwZMCSAUsElggsEVgisERgicCSnXs9MpETidvAbeA2cBu4DdwGbgO3gdvAbeAmuAluUnfJzr3ewNu51yMdGch8gLdzr0cWJ3fu9cjbTW8pSEUa0pG13wSWCCwRWCKwRGCJwBKBJQJLBJYILBFYIrBEYInAEoElAksElggsEVgisGTnXo/EzXEL3AK3wC1wC9wCt8AtcAvcArfELXFL3BK3xO1myY3BnXu90bZzr0dOZHFy516PHA/adu71SEUa0pH1Dm/nXo+cdVdvltxys2RLdgAsEVgisERgicASgSUCSwSWKCxRWKKwRGGJwhKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisERhicIShSU793okboKb4Ca4CW6Cm+CmuCluipviprgpboqb4qa4ad0lO/e6/1PD7WbJzb6dez3SkI6Mh30793rkRBYnd+71Bt7OvR4pSEUasna3whKFJQpLFJYoLFFYorBEYYnCEoUlCksUligsUViisERhicIShSUKS3bu9UjcErfELXGbuE3cJm4Tt4nbxG3iNnGbuE3cFm4Lt4Xbwu1myQ3HnXu9gbdzr0cmciKLkzv3egNv516PFKQiDekPEXfu9ch87vWdez2ydoDBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgs2bnXLWGJwZKdez0SN8PNcDPcDDfDzXBz3Bw3x81xc9wcN8eNecnOve5bg3mJMS/ZudebfTv3eqQiDekP+3bu9chETuTt9rWHdu71yIEUpCJrdxssMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrBk516PxG3htnBbuK1y27nXIwdSkIo0pCMDmciJxG3gxuzVmb3u3OsNx517vYG3c69HBjKRE7ke4O3c65EDKUhF2kPEnXs9smZBO/d65ETWDnBY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEmf26rDEYYkze3Vmr87s1Zm9OrNXZ/bqzF6d2asze3Vmr87s1Zm9OrNXZ17izEucecnOve5bg3mJMy/ZudebfTv3eqQgFWkP+3bu9chAJvJ2u/fQLE7u3OuRAylIdjcscVjisMRhicMShyUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkOMcJznGCc5zgHCc4xwlmr8HsNZi9BrPXYPYazF6D2Wswew1mr8HsNZi9BrPXYPYazF537vWG48693sDbudcjHRnIRNbEcOdet7QLOZCC1IeIO/d6pD/3+s69HpnI2gEBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBLMXgOWBCwJZq/B7DWYvQaz12D2Gsxeg9lrMHsNZq/B7DWYvQbzkmBeEsxLgnlJMC/Zudd9azAvCeYlO/d6s2/nXo8cSEHqw76dez3SkYGsk5Wdez2yOLlzr0cOZO3uhCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliTnOMk5TnKOk5zjJLPXZPaazF6T2Wsye01mr8nsNZm9JrPXZPaazF6T2Wsye01mr8nsdedebzju3OsNvJ17PdKQjgxknazs3OuRxcmdez1yIOUh4s69HmnPvb5zr0cGsnZAwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYks9eEJQlLktnrZPY6mb1OZq+T2etk9jqZvU5mr5PZ62T2Opm9TuYlk3nJZF4ymZdM5iU793rfGpN5yWResnOvN/t27nVLuZADWSfQO/d6pCEdWSfQO/d65EQWJ3fu9cja3ROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcmEJROWTFgyYcnkHGdyjjM5x5mc40xmr5PZ62T2Opm9Tmavk9nrZPY6mb1OZq+T2etk9jqZvU5mr5PZ62T2unOvNxx37vUG3s69HqlIQzqyTqB37vXIiSxO7tzrkeMh4s69Hlkn0Dv3eiQ7AJZMWDJhyYQlE5ZMWDJhyYQlE5ZMWDJhyYQlE5ZMWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsWLJgyYIlC5YsZq8LlixYspi9Lmavi9nrYva6mL0uZq+L2eti9rqYvS5mr4vZ62JespiXLOYli3nJYl6yc6+Wt7zd1i0DmciJXCX3M86WAylIRRoSN8PNcDPcDDfHzXFz3Bw3x81xc9wcN8fNcQvcArfALXAL3AK3wC1wC9wCt8QtcUvcbpa43dKQjgxkInG7WeL3j/tmyZEDKcjbbd7SkI4M5O0Wt5zIVfJmyZEDyWtbrORiJRcruVjJxUouXtt6VnJcO/jqsvU4K/GlpWlt2pr2pu+X6Ftnu/5s+lnTX3pcTY+mpWlt2pp+VvZLR9PZ9Gz6Wd1fWq6mR9PStDZtfP/iTUfT7fVKe73S1lmvpkfTwvprW2dt66xtnTWazqYn638z52hrvtZ8ra2ztXW2ts43eR4dTWfTbZ1v+hx94+fRo+m2zt7W+UbQo73paLqts7d19rbO0V5vtNdbKPrS2nT7+d40Oj+LaOscbZ1vID16oW8kPXqw/jeUHt18s/lmW+ds65xtnW80Pbrto9n20WzrvPF0tDZtTbd1nm2di1Ffejbd9tFq67zaOq+2zqu93tVe72r7aLV9tNrP98bV+Vks1nmHax89mpamtWmr9d8J20fjOxqvdsh2r+dovBqNV6PxajRejcarHbXd6zwar0bj1Wi82nHbvbaj8Wo0Xo3Gq9F4tTO35/tvvBqNV6PxajRejcar0Xg1Gq929nb/LHb49qxt49VovBqNV6Pxaidwz/o3Xg1tvo1XO4V71rPxajRejcar0Xg1Gq92Fvesc+PVaLwajVc7j3vWtvFqNF6NxqvReDW8rXPj1Wi8Go1Xo/FqNF6NxqvReLXDuednEW2dG69G49VovBqNVzuie9a/8Wpk82282jHds56NV6PxajRejcar0Xi1w7pnnRuvRuPVaLzagd2zto1Xo/FqNF6NxquT2t3ff+PVaLwajVej8Wo0Xo3Gq9F4tdO752ex2jo3XknjlTReSePVzvDu9ZfGq5PiXVtH01++cW395Rtj6y/fuNdtR3kfPZqWpr98c3vdvHq0Nx1NZ9Nfvrm//5tXR9+8yth6NC1Na9PWtDcdTWfTs+mF1uarzVebrzZfbb7afLX5avPV5qvN15qvNV9rvtZ8rfla87Xma83Xmq81X2++3ny9+Xrz9ebrzdebrzdfb77efKP5RvON5hvNN5pvNN9ovtF8o/nevMp9z9+8evSX79z3/82rR2vT1vTtu+/5m1ePzqZn0ws92z6abR/Nto9uXj3amvamo+lsejbd9u9qvqv5rua7mu9qvqv5rua7mu9qvgvfHRJ+9GhamtamrWlvOprOpmfTzbfxShuvtPFqJ4Yf3XxH8x3NdzTf0Xw3r25u7+Dwo+/7WbeWprVpa9qbhpM7P/zo2fRCb14dPYqfO0T86Ns3t7amvWn2kTZeaeOVNl5p45U2XmnjlTZeaeOVNl5p45U2XmnjlTZeaeOVNl5p45U2XmnjlTZeaeOVNl5p45U2XmnjlTZeaeOVNl5p45U2XmnjlTZeaePVThofnc03m28232y+2Xyz+WbzzeabzTeb72y+s/nO5jub72z31c2rzdgdPX50Nj2bXsXYHT9+9Ghamr599x68efVobzqazqbb/m28ssYra7yyxitrvLLGK2u8ssYra7yyxitrvLLGK2u8ssYra7yyxitrvLLGK2u8ssarnU0+WpqvNF9pvtJ8pflK85XmK81Xmq80X22+2ny1+Wrz1earzVeb7+aVbD2LpTuvfPTm1dGjaWma97E7tPxobzqazqZ5H7uTy0dvXuXWo2lpmn1kjVfWeGWNV9Z4ZY1X1nhljVfWeGWNV9Z4ZY1X1nhljVfWeGWNV9Z4ZY1X1nhljVfWeGWNV9Z4ZY1X1nhljVfWeGWNV9Z4ZY1X1ni1w82Pbr6z+c7mO5vvbL6r+a7mu5rvar6r+a7mu5rvar6r+S58d9j50dxXO+78/OfatBVvd+L50dF0Nj2Ltzv1fPS4mh5N375za23amvamo2m44Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1XOxH96OarzdearzVfa77WfK35WvO15mvN15qvNV9vvt58vfl68/Xm681380q2zmLsjkk/Gj7voPSjR9NSjN1Z6Udb0950NJ3F4R2YfvRiv+TVdNtHjVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV9545Y1X3njljVfeeOWNV954FY1XO1H9aGlam7amveloOpueTTff0XxH8x3NdzTf0XxH8x3NdzTf0XxH8xXuq2jzq2jzq52z3rzdQetHe9PRdBZvd9j60fB5x60fffvOraVpbdqa9qbhRjReReNVNF5F41U0XkXjVTReReNVNF5F41U0XkXjVTReReNVNF5F41U0XkXjVTRe7SD2o5uvN19vvtF8o/lG843mG803mm8032i+0Xyj+WbzzeabzTebbzbfzSvZOoqxO5396Nk0fN4B7UePYuyOaD9am7amvekoDu+c9qMn+2XC5x3VfnTbR41X0XgVjVfReBWNV9F4FY1X0XiVjVfZeJWNV9l4lY1X2XiVjVfZeJWNV9l4lY1X2XiVjVfZeJWNV9l4lY1X2XiVjVfZeJVt3p6NV9l4lW3enm3enm3enm3enm3enm3enm3enm3enm3enm3enm3enm3enm3enm1+lW1+lW1+tbPd+17KNr/KNr/a8e7N253vfrQ17U1H8XZnvB89m4bPO+a9Gbtz3o+WprVpaxpuZONVNl5l41U2XmXjVTZeZeNVNl5l41U2XmXjVTZeZeNVNl5l41U2XmXjVTZeZePVzn8/uvlm883mm823zduzzduzzduzzduzzduzzduzzduzzduzzduzzduzzduzzduzzduzzdt3JHwzeWfCN2N3KPzR2fRsGj7vYPhm7E6GP1qa1qataS8O73j4o7P2yw6IP5p9NBuvZuPVbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVez8Wo2Xs3Gq9l4NRuvZuPVbLyajVez8Wq2eftsvJqNV7PN22ebt882b59t3j7bvH22efts8/bZ5u2zzdtnm7fPNm+fbX412/xqtvnVbPOr2eZXO1J+7qU2v5ptfrVT5Zu3O1b+aG3amvbi7Y6WPzqbnk1zTrfj5Y8eTUvT2jTcmI1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/FqNl7NxqvZeDUbr2bj1Wy8mo1Xs/FqNl7Ndj442/ngbOeDs50PzjZvn23evtq8fbV5+2rz9tXm7avN21ebt682b19t3r7avH21eftq8/bV5u2rzdt3En0zeUfRN2N3Fv3R0XQ2PZvmnG4H0h89mpamtWkrDu9U+qOj9svOpT96Ns0+Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1Xq/FqNV6txqvVeLUar1bj1Wq8Wo1Xq/FqNV6txqvV5u2r8Wo1Xq02b19t3r7avH21eftq8/bV5u2rzdtXm7evNm9fbd6+2rx9tfnVavOr1eZXq82vVptf7ST7uZfa/Gq1+dUOs2/e7jT7o6VpbZocxU60PzqazqbJUexU+9Hrano0LU03bjRercar1Xi1Gq9W49WCV+OCV+OCV+OCV+OCV+OCV+OCV+OCV+OCV+OCV+O6mu9ovqP5juY7mu9ovqP5juY7mu9ovqP5SvOV5ivNV5qvNF9pvtJ8pflK85Xmq81Xm+/mlWxdOYqx8+2P9qaj6Wy6chRj59uPtqvp0bQ0rQ+Hx863P7pyFGPn2x+dTdc+Ghe8Ghe8Ghe8Ghe8Ghe8Ghe8Ghe8Ghe8Ghe8Gpc3X2++0Xyj+UbzjeYbzTeabzTfaL7RfKP5ZvPN5pvNN5tvNt9svtl8s/lm883mO5vvbL6z+c7mO5vvbL6z+c7mO5vvbL6r+a7mu5rvar6r+a7mu9p9dfNq7vv55tWj7znDfU/ufPujR9N3jsK3Zv+OxqvReDUar0bj1Wi8Go1Xo/FqNF6NxqvReDUar0bj1Wi8Go1Xo/FqNF6NxqvReDUar0bj1Wi8Go1Xo/FqNF6NxqvReDUar0bj1dDmq81Xm682X22+2ny1+ZJnGIM8wxjkGcYgzzB2vv3R9bw/BnmGMcgzjEGeYQzyDGM0Xo3Gq9F4NRqvRuPVaLwajVej8Wo0Xo3Gq9F4NRqvRuPVaLwajVej8Wo0Xo3Gq9F4NRqvRuPVaLwajVej8Wo0Xo3Gq9F4NRqvRuPVaLwajVej8Wo0Xo3Gq9F4NRqvRuPVaLwajVej8Wo0Xo3Gq9F4NRqvRuPVaLwajVdjNd/VfFc9p4ydb7/fH46db3905QrGzrc/Wpu2puvcaux8+6Oz6dn0QjdetXz7aPn2IY1X0ngljVfSeCWNV9J4JY1X0ngljVfSeCWNV9J4JY1X0ngljVfSeCWNV9J4JY1X0ngljVfSeCWNV9J4JY1X0ngl2nyt+VrzteZrzdearzVfa77WfK35WuVyx8m3Hw0nT779aG3amvam4eTJtx89m+b95Mm3H1253HHy7UdXLnecfPvR3jT7qOXbR8u3D2m8ksYrabySxitpvJLGK2m8ksYrabySxitpvJLGK2m8ksYrabySxitpvJLGK2m8ksYrabySxitpvJLGK2m8ksYrabySxitpvJLVfDkfHMr54FDOB4dyPjiU88GhnA8O5XxwKOeDQzkfHMr54NCr+Y7mO5rvaL6j+Q7uq51v34zd+fZHZ9Oz6Tq3Gjvf/ujRtDRdc9Fx8u1He9PRdDbN/tXGK2280sYrbbzSxittvNLGK2280sYrbbzSxittvNLGK2280sYrbbzSxittvNLGK228Umu+3ny9+Xrz9ebrzdebrzdfb77efL35RvON5hvNN5pvNN9ovtF8o3K54+TbdWvex558+9GjaWm65qLj5NuP9qaj6Wya97En3771rFzBOPn2o6Xpto8ar7TxShuvtPFKG6+08Uobr7TxShuvtPFKG6+08Uobr7TxShuvtPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8cpG8x3NdzTf0XxH8x3NV5qvNF9pvtJ8pflK85XmK81Xmq80X22+yn1l2ny1+WqdW42db390NJ1N17nV2Pn2o+1qejRdc9Fx8u1HW9PedDQNN6zxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyhqvrPHKGq+s8coar6zxyqL5RvON5pvNN5tvNt9svtl8s/lm883mm803m+9svrP5zuY7m+9svrP5zsrljpNv161n0/D55NuPHk0zFz359qOtaW86mq7c1zj59qMrVzBOvv3o0TT7qOXbhzdeeeOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeOVN15545U3XnnjlTdeeeOVN165Nt/GK2+8cm2+2ny1+Wrz1earzdearzVfa77WfK35WvO15mvNt83bvc2v3Nt91eZX3uZXO9++ebvz7Y/2pqPpOrcaO9/+aPi88+2PrnOrcfLt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+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfri3friffvu+lVTlkbf3t2vrb9eTbj64csrb+dm397brz7Y+unJu2/nZt/e3a+ttVOB/U1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397dr621Ws+dLfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397dr627X1t2vrb9fW366tv11bf7u2/nZt/e3a+tu19bdr62/X1t+urb9dW3+7tv52bf3t2vrbtfW3a+tv19bfrq2/XVt/u7b+dm397fr/ZepeshzJcSCKbkkkAH72v7GqDFLindnpiXUx5S/kcOg5/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x7stwf+9mC/PdhvD/ztgb897n77yf1D/u0hB/72OPvt35zk355b4G8P/O1x99tvfnzG3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztEYPeQe/4/Y4v8LcH/vbA3x7xfu8c8Z4PBv72wN8e+Nvj+ttvfny+/vY8uZF/vxOJ62+/mesIXuFvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbIoJf51d1vnyfTy/wKf3vgb4+7337z4zP+9sDfHme//ZuD/NtzC/ztgb897n77zYv8uIG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8euehd9B5e9ZN/e26Bvz3wt8fdb785yL89t8DfHvjb4/rbb17k3+/44vrbb37zuutvvznI7zrC3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztUcyv2G+Pu99+PkvMr9hvD/ztgb897n77zYv820MO/O1x9tu/uZN/e26Bvz3wt8fdb795kh838LcH/vbA3x742wN/e+BvD/zt/+dBnmR64RX+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9hjM2wfz9utv7ye/OTD+9sDfHne//eZOfnNg/O2Bvz2uv/3mSf79ji+uv/3k52+P62+/uZPfdYS/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NtjML9ivz3ufvv5LDG/Yr898LcH/va4++03T/JvnyHwt8fZb//mRn7P6fC3B/72uPvtNw/y4wb+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA397TObtk3n79bf3k99zOvztgb897n77zY38ntPhbw/87XH97TcP8u93fHH97Tf/ficS199+cyO/6wh/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LfHZH7Ffnvc/fbzWWJ+xX574G8P/O1x99tvHuS3R4G/Pc5++8lnv/2b3x4F/vbA3x53v/3mIj9u4G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wt8di3r6Yt19/ez/57VHgbw/87XH320+uD/ntUeBvD/ztcf3tNxf59zu+uP72m98exfW3nzw+5Hcd4W8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9tjMr9hvj7vf/vdZOvvtf/vJcfbbv/lvzpAnBznJf3sUdfLfHnI/+beHHGe//Zv3y/1DbuRODnKSizzI9L7fD8bZb785PuRGfn8X9vv9YNz99puL/HiFvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz028/bNvH0zb9/M2zfz9s28fTO/2syvNvOrzfxqM7/azK8286v9fj8Y+/1+MPb7/WDs9/vBuPvtJ7/fD8Z+vx+M/X4/GPv9fjD2+/1g4G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m/PT6e309vp7fQGvUFv0Bv0xu+5c37e+53z854P5tlv/+Neft77nfPz3u+cn/d8MO9++zq5k4Oc5CL/rt/E35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib89P4PeSe+kd9I76Z30TnonvZPeSe+kd9G76F30LnoXvev3/Tk/7/3O+Xnvd87Pe79zft7zwfy854P5ec8H8/Pe75yf937n/Lzng/l5zwfz854P5ue93zk/7/3O+Xk+mWzv/c7Z3vPBxN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NuzwasGrxq8avCqwasGr1rQG/QGvUFv0Bv0Jr1Jb9Kb9Ca9SW/Sm/QmvUlv8bmq3x5y3v32m4Oc5N8ecp799m+e5EX+7bnl3W+/uZE7Ocjv+sXfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz0bvGrwqsGrBq8avGrwqi16F72L3kXvonfTu+nd9G56N72b3k3vpnfT++bt2d+8Pfubt2d/8/a8/vZ+8m/PLa+//eZBnuRF/u255d1vv7mROznIv++xef3tN/9+J5LX337zIr/rCH974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbs8OrDq86vOrwqsOrDq960Vv0Fr1Fb9Fb9Ba9RW/RW/QOege9g95B76B30DvoHXyuBr2D3vnbQ867335zJwf5t4ec/f3eOfv7vXP293vnvPvt53p8v3fO/n7vnP393jn7ez6Y+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3Z4dXHV51eBXwKuBVwKt4zwcz3vPBjPd8MOPN2zPevD3jzdszPvQ2ehu9jd5Gb6O30dvobfQ2ehu9nd5Ob//9ji/j/d454/3eOeP93jnj/d454z0fzHi/d854v3fOeL93znjvd854zwfz+tvz5CT/fieS199+8yS/6wh/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vYMeIW/PfG3Z8CrgFcBr2LQC68CXsWkd9I76Z30TnonvZPeSe+kd9K76F30LnoXvYveRe/ic7XoXfSu3x5y3v32mxu5k397yHn227+5yIP823PLu99+8+Nzvvc7Z77ng4m/PfG3J/72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3smvEp4lfAq4VXCq4RX2ent9HZ6O72d3k5vp7fTG/QGvUFv0Bv0Br1Bb9Ab9Aa9Se/hVT/5t+eW199+c5KLPMi/Pbe8++03Pz7ne79z5ns+mNffnicH+c3rrr/95kF+1xH+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Z8Ap/e+Jvz4RXCa8SXuWiF14lvMpF76Z307vp3fRueje9m95N76aXeXsxby/m7cX8qphfsd+e9fxXyX57st+ed799n/z4XO/9zlnv/c559tsPb89++zcnuci/Pbe8++03L/Ljc733Oyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O1Z8KrgVcGrglcFrwpeVdKb9Ca9SW/Sy7y9mLcX8/Zi3l7M24t5ezFvL+btxby9mLcX8/Zi3l7M24t5+/W395PfHPj6228OcpKL/ObAd7/95kV+fK73fue8/vY8uZN/vxPJ62+/mesIXuFvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE354Fr/C3J/72HPBqwKsBrwbz9gGvBrwazNsH8/bBvH0wbx/M2wfz9sG8fTBvH8zbB/P2wbx9ML8azK8G86vB/Ir99rz77fNkeplf3f32ffIiPz6P977UHG+fIcd7X2qO977UHO99qTnePkOO977UHO99qTne+1JzvPelJv72xN+e+NsTf3vib0/87Ym/PfG3J/72xN+e+NsTf3vib0/87Tng1YBXA14NeDXg1YBXg+eDg+eDg+eDg+eDg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mLeP977UvP72OLmROznISX7P6cZ7X2qO977UHO99qTne+1Lz+tvz5Eb+/U4kx3tfao7NdQSv8Lcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+Jvzwmv8Lcn/vac8GrCqwmvJvP2Ca8mvJrM2yfz9sm8fTJvn8zbJ/P2ybx9Mm+fzNsn8/bJvH0yv5rMrybzq8n8iv32vPvt82R6mV/N977UnO99qTnf+1Lz7ref/N6XmvO9LzXne19qnv32b357FPO9LzXne19qzve+1Lz77Tc/buBvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vac8GrCqwmvJrya8GrCq8nzwcnzwcnzwcnzwcm8fTJvn8zbJ/P2ybx9Mm+fzNsn8/bJvH0yb5/M2yfz9sm8fTJvn8zbr7+9n/z2KNZ7X2qu977UXO99qXn3229+exTrvS8113tfaq73vtS8/vabf7/jy+tvv/ntUaz3vtS8/vab33WEvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE397LniFvz3xt+eCVwteLXi1mLcveLXg1WLevpi3L+bti3n7Yt6+mLcv5u2Lefti3r6Yty/m7Yv51WJ+tZhfLeZX7Lfn3W8/n6U/Xq3zef7j1Tf/zRnOZ/KPV988yX97FOfzfHzIf9fUej7kXM+HnOv5kHM9H3Ku50POs9/+zYM8yYu8X170vt8P5tlv/+YgJ/n9XVjv94N599tvXuTHK/ztib89F7xa8GrBqwWvFrxa8GrxfHDxfHDzfHDzfHAzb9/M2zfz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zfxqM7/azK8286vN/Gozv9rMr/b7/WDu9/vB3O/3g7nf7wfz7rff/PY39vv9YO73+8Hc7/eDud/vBxN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+Jvzw2vNrza8GrDqw2vNrzazNs38/bNvH0zb9/M2zfz9s28fTNv38zbN/P2zbx9M2/fzNs38/bN/Gozv9rMrzbzq838ajO/2syvNvOrzfyK/fZkvz33ez9O3v32ffL7/rzf+1Lz7Ld/cycH+X1/3u99qXn322+e5EX+Xb+Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC397fTq9nd5Ob6e309vp7fR2eoPeoDfoDXqD3qA36A164/f9ua6//eT3vtS6++03d3KQk/zjZF1/+82TvMj75fp9f67rb7/59z2nrr/95iT/rqPC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC316fRe+id9G76F30LnoXvYveRe+md9O76d30bno3vZveTe+m982vqr35VbU3vyr226s9/1W1977Uau99qXX322+e5N8ecrX3vtQ6++3f3Mi/Pbdq732p1d77Uuvut988yO/6xd9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vRq8avCqwasGrxq8avCqBb1Bb9Kb9Ca9SW/Sm/QmvUlv0pv0Fr1Fb9Fb9Ba9RW/9fidS7b0vtdp7X2q1977UuvvtNzfyb8+t2ntfarX3vtS6/vabB/n3Pbauv/3m3+9E6vrbb25kriN4hb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvrwavGrxq8KrDqw6vOrzqb95e/c3bq795e/U3b6/+5u3V37y9+ofeRm+jt9Hb6G30NnobvY3eRm+j9/mviv32Yr+9+ntfavX3vtS6++03D/JvD7n6+71z9fd75+rv987V3/tSq7/fO1d/v3eu/n7vXP09Hyz87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+Nurw6sOrzq86vCqw6sOr3rRW/QWvUXvoHfQO+gd9A56B72D3kHvoHfQO+md9E56J72T3vn7HV/193vn6u/3ztXf752rv987V3/PB6u/3ztXf793rv5+71zX335zkcePw9fffvPvdyJ1/e0nb64jeIW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3sFvMLfXvjbK+BVwKuAV9HphVcBr6LT2+nt9HZ6O72d3k5v0Bv0Br1Bb9Ab9Aa9QW/Q+/xXxX57sd9e8d6XWvHel1p3v/3mIv/2kCve+1Lr7Ld/8+NzvPelVrz3pVa896XW3W+/OcmPG/jbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv70CXgW8CngV8CrgVcCrmPROeie9k95J76J30bvoXfQuehe9i95F76J30bvp3fRueje9h1f95N+eW8V7X2rFe19q3f32mx+f870vtfK9L7XyvS+1rr/95iT/fsdX199+829eV9fffvO7jvC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87ZXwCn974W+vhFcJrxJeZdALrxJeZdKb9Ca9SW/Sm/QmvUlv0Vv0Fr1Fb9HL/CqZX7HfXll8rphfsd9ed799n9zJQU7ybw+5zn77N0/yIv/23Orut9/cyJ0c5McN/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXgmvEl4lvEp4lfAq4VVueje9m95N76aXeXsxby/m7cW8vZi3F/P2Yt5ezNuLeXsxby/m7cW8vZi3F/P262/vJ7858PW33zzIk7zIbw5899tvbuRODvLvd3x1/e03/34nUtfffvMiv+sIf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72KniFv73wt1fBq4JXBa+KeXvBq4JXxby9mLcX8/Zi3l7M24t5ezFvL+btxby9mLcX8/ZiflXMr4r5VTG/KuZXd7/9fJaYX7HfXne/fZ/cyJ0c5N8+Q9V7X2rVe19q1XtfatXbZ6h670uteu9LrXrvS61670st/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjba8CrAa8GvBrwasCrAa8GzwcHzwcHzwcHzwcH8/bBvH0wbx/M2wfz9sG8fTBvH8zbB/P2wbx9MG8fzNsH8/bBvH0wbx/vfal1/e1xcpKLPMiT/J7Tjfe+1Brvfak13vtSa7z3pdb1t+fJSf79TqTGe19qjfe+1MLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wt9eAV/jbC397DXg14NWAV4N5+4BXA14N5u2Deftg3j6Ytw/m7YN5+2DePpi3D+btg3n7YN4+mF8N5leD+dVgfsV+e9399vNZYn7FfnuN977Umu99qTXf+1Lr7rff/NujqPnel1rzvS+1zn77N//2KGq+96XWfO9Lrfnel1p3v/3mxw387YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9eE15NeDXh1YRXE15NeDV5Pjh5Pjh5Pjh5PjiZt0/m7ZN5+2TePpm3T+btk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+/W395PfHsV870ut+d6XWvO9L7XufvvNb49ivvel1nzvS6353pda199+8+93fHX97Te/PYr53pda199+87uO8LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+Fvrwmv8LcX/vaa8GrCqwmvJvP2Ca8mvJrM2xfz9sW8fTFvX8zbF/P2xbx9MW9fzNsX8/bFvH0xv1rMrxbzq8X8iv32Ovvtu07+2wfeJ0/yIu+Xjw/55kbu5CAnucj0dno7vZ3eoDfoDXqD3qA36A16g96gN+hNepPepDfpTXqT3qQ36U16k96it+j9x6v/v6SfHOQkF3mQ5788T17k/fI/Xv1y+5fXyZ0c5CT/9Z7P2BjkSV7k/fLkv3fy3zs558k5T855cs7zr7efPN9/+1zk/fL6kBv577/3XCMryPnOZxV5kDnnxTkvznl/3rltznlzzptz3vnOanPOm3PenPPmnPf7XJ399m9u5E4OcpLrd7Z/++33rP722395kd85/+23/3L7nefffvsvx+98/vbbf7nIgzzJi7x/5/a33/7LjdzJ8Turv/32Xy7yIE/yu343vNrwasOrDa82vPrbb/+ebbzr92+//Zc55+Ccg3POzzvP5Jyzv/NJzjk55+Sck3NOzjnXO7fknItzLs758OqcVXHOxTkX51yccz1Onv32b+acB+c8OOfBOR9enbMdj5N7cM6Dcx6c8+CcD6/OeU7OebZ3PpNznpzz5Jwn5zw558Orc26Tc56c8+KcD6/OWS3OeXHOi3NenPN6f4/Ofvs3c86Lc96c8+acD6/O2e7392hvznlzzptz3pzz4dU5z/075/G3337OZ/ztt/9yJwc5yUUe33Mbn88kL/J++fBqnNzInRzkJP/+Ho3P+341Pu/71fi871fj875fjc/7fjU+h1f95N/f/fHpQU5ykQd5vvPsi7zf+QTnHJxzcM7BOQfnfHh1zi045+Ccg3OO/c4qOefknJNzTs75fb8an+Sck3NOzjk55+ScD6/O2VZ7Z1Wcc3HOxTkX53x4dc6zOOfDq/P/uegd/Ps+Xo3PoHfQO+gd9A7+fcd8/xZjkfn3nfz7zvb+LWYnBznJ9c5/DvIkLzL/vov/3sV/7+rkIPPvu/j3XeP9e635/tvXIu+X94fMv+/u799oB5nP84Ybe5A5580573fO7fPj82ifRu7kID9utE+RB3mSF/l9rs5++zc3cicHOcm/73Wjtfe5am2SF/mdc+sf8u/7xmi9kx83Wk9ykQd5khf58bkF5xycc3DO8bjRgnMOzjk45+Cc3/3gaME5J+ecnHNyzsk5Z76zzXf9tuSck3NOzjk55/q88yzOuR6fW3HOxTkX51ycc3HO9fjcinMenPPgnMfjcxuc8+CcB+c8OOfx+Hz227+Zc56c8+ScJ+c8453tfJxsk3OenPPknCfnPN/3jbY45/X+DrbFOS/OeXHOi3NenPN6fwfb4pwX57w55/3+DrbNOW/OeXPOm3Pe7+/g2W//Zs753Q+O/u4HR3/3g6N/ft/rRv+8v0f9k+QiD/Ikv+8b/fPOubf396i3Ru7kICe5yO/7Rm+TvMjvnHt/3zd6b+RODnKS39+j/uZXo7/51ejvfnD0zjkH5xzve12P93e/B+ccnHNwzsE5x/u+0YNzjvf3qCfnnJxzcs7JOSfnnO97XU/OOTnn5Jzz/d3vxTkX51ycc3HO9f4enf32b+aci3MuzpnvV32873V9vL/7ne9Xne9Xne9Xne9XfbzvdX1wzuN9r+vwqsOrDq/6pHfSC686vOrwqs/H5z4XmX/fxb/venzuq5ODnOTHjb4GeZIXmX/fzX/v5r93d3KQ+ffd/Pvu972ub7ixF/n9HYzPh9zI7/tGfIL8Ps/B/WB8BnmSF/mdc7TH52iN3MlBftyIVuRBnuRFfp+r4H4w3rx9xJu3j3jz9hFv3j6iv+91wf1g9EleZM45OOd43zciOGfuB4P7wQjOOTjn4JyDc47H50jOOTnn5Jy5H4zknJNzTs45OWfuB4P7wSjOuTjn4pyLc673vS64H4zinItzLs65OOfxvm/E4JzH43MMznlwzoNzHpwz94MxHp9jcM6Tc+Z+MObjc0zOeXLO3A8G94Nnv/2ez+ScJ+fM/WBwPxjcD8Z63+tiPU7G4pwX58z9YHA/GOt934jNOe/3dzA257w5Z+4Hg/vB4H4w9vs7GJtz3u+ck/vB/Ly/g/np5CAnucjv7+DZb//mRX7nnNwPJveD2d73umzv71G2JBd5kCf5fd/I9s45+/t7lL2ROznISS7y+76RfZIXmXOO930jg3MOzpn7weR+MN/zwZHBOQfnzP1gcj+Y3A9mvu91me/vfibnnJwz94PJ/WDm+76RyTnn+3uUxTkX58z9YHI/mNwPZr3vdVmcc3HO3A9mvb/7OTjnwTlzP5jcD5799ns+g3MenDP3g8n9YPL9Kuf7Xpfz/d1Pvl8l36+S71fJ96uc73tdTs55vu91Ca8SXiW8ykXvohdeJbxKeJXv+eDI93xw5OLfd/Pv+54PjnzPB0e+54Mjd5Lhxns+OPI9Hxz5ng+O3O/ft7gfLO4H6z0fHPWeD456zwfH2W//5ve9rrgfrPd8cNR7PjjqPR8c1Rr5fd+oFuT3eS7uB+s9Hxz1ng+Oes8HR7V3zvWeD456zwdHveeDo3qQHzfqPR8c9Z4PjnrPB0f1RX6fq+J+sIJzDs45OOfgnON9ryvuBys45+Ccg3NOzvk9HxyVnDP3g8X9YCXnnJxzcs7JOb/ng6OKcy7OuThn7gerOOfinItzLs6Z+8HifrCYtxfz9hqc8+Ccx/teV9wPFvP2Gpzz4JwH5/yeD46anPN7Pjhqcs6Tc56c8+ScuR+s93xw1OScF+fM/WC954OjFue8OGfuB4v7wXrPB0ctznlxztwPFveDxf1g7fe9rt7zwVGbc96cM/eDxf1g8XxwfD7k93dw8Hxw8HxwcD84uB8c3A8Ong8Ong8Ong8O7gcHzwcHzwcHzwcH94OD+8HB88HB88HB88HB/eDgfnBwPzj6+143eD44eD44eD44uB8c3A8Ong+OzjnzfHDwfHDwfHBwPzi4HxzcDw6eDw6eDw6eDw7uBwfPBwfPBwfPBwf3g4P7wcHzwcHzwcHzwcH94OB+cHA/OOp9rxs8Hxw8Hxw8HxzcDw7uBwfPB0dxzm//aozBOQ/OmfvBwf3g4H5wjPe9bgzOeXDO3A+Ot381xuScJ+fM/eDgfnC8/asxJuc8OWfuBwf3g4PvV2O973Xj7V+Nwferwferwferwfersd73urE45/W+1w14NeDVgFdj07vphVcDXg14NXg+OHg+OHg+ONlnmDwfnDwfnDwfnJ8kP25Mng9Ong9Ong/Oz/v3ndwPTu4HJ88HJ88HJ88HJ/sMs73vdZP7wcnzwcnzwcnzwdkb+X3fmD3I7/M8uR+cPB+cPB+cPB+c7DNMng9Ong9Ong/O4Jy5H5w8H5w8H5w8H5zBOXM/OLkfnDwfnDwfnDwfnOwzzHzf6yb3g5Png5Png5Png7M4Z54PzuKcuR+c3A9Ong9Ong9Ong/O4px5Pjh5Pjh5PjgH58z94OT54OT54OT54BycM/eDk/vBybx9Mm+fPB+ck3Oe73vd5H5wMm+fPB+cPB+ck3Pm+eBcnDPPByfPByfPByfPByfPByf3g5Png5Png5Png5P7wcnzwcnzwcnzwcn94OR+cPJ8cPJ8cPJ8cHE/uLgfXNwPrs/7Xrd4Prh4Prh4Pri4H1zcDy6eD672Ib+/g4vng4vng4v7wcX94OJ+cPF8cPF8cPF8cHE/uHg+uHg+uHg+uLgfXNwPst8+2G8f7LcP9tsH++2D/fax4n2vWzwfXDwfXDwfXNwPLu4HF88HV3DOPB9cPB9cPB9c3A8u7gcX94OL54OL54OL54OL+8HF88HF88HF88HF/eDifnDxfHDxfHDxfHBxP7i4H1zcD9799nO2PB9cPB9cPB9c3A8u7gcXzwfvfvvN7+/RYv9qTc6Z+8HF/eDifnDN973u7rffzDlzP7jYv7r77TdzztwPLu4HF/tXi/2rtThn7gcX94OL71d3v/2cLftXi+9Xi+9Xi+9Xi+9Xd7/9nOfmnPf7Xsd++2C/fbDfPvbn9W72GTa82vCK/faxeT64eT64eT642WfYPB/cPB/cPB+8++03P25sng9ung9ung/e/faTuR/c3A9ung9ung9ung9u9hnufns/+XFj83xw83xw83xwRyO/7xs7gvw+z5v7wc3zwc3zwc3zwc0+w+b54Ob54Ob54N1vv/lxY/N8cPN8cPN88O6338znivvBzfPBzfPBzfPBzT7D3W8/Z8v94Ob54Ob54Ob54B6cM88H9+CcuR/c3A9ung9ung9ung9u9kU3zwc3zwc3zwc3+6Kb+8HN88HN88HN88HNvujmfnBzP7iZt2/m7Zvng5t90bvffs6W+8HNvH3zfHDzfHCzL7p5Prg358zzwc3zwc3zwc3zwc3zwc394Ob54H7PB+fnPR+cn3c/OD/v+eD8vOeD8/OeD87Pux+cn3c/OD/v+eD8vOeD8/OeD87Pux+cn3c/OD/vfnDe/fZ+8o+T8/OeD87Pez44P+9+cH7e/eD8vOeD89M/5N/fwfl5zwfn5z0fnJ93Pzg/735wft794Py854Pz854Pzk/nnINzfs8H5yc45+Ccg3MOzvk9H5yf4JyDcw7OOTnn5Jyzv7N9zwfnJznn5JyTc07O+T0fnJ/knN/zwfkpzrk45+Kci3Muzvk9H5yf4pyLcy7O+T0fnJ/BOQ/OeXDOg3N+zwfnZ3DOg3MenPPgnCfnPNs72/d8cH4m5zw558k5T875PR+cd7/95v3OZ3HOi3NenPPinBfnvOqd2+KcF+e8OOe3fzXvfvvNnPPmnDfn/Pav5mdzzptz3pzz5pzf96t599v7yb+/+7O971ezve9Xs73vV7O971fz7rfXyZP8+143//bb/x+c/+W/71ff3Mid/K+3t5OTXORBnuR/59w/J++X/3jVz3/vH6++uZODnOQiD/IkL/J+OegNeoPeoDfoDXqD3qA36A16k96kN+lNepPepDfpTXqT3qS36C16i96it+gteoveorfoLXoHvYPeQe+gd9A76B30DnoHvX/fr/r5nP99v/rmv97zmf/j1TcHOcl/vecz/8erb57kRd4vL66jxXW0uI7+ePXNSS7yIE/yInP9bno3vZveTe+md9O76d30bnr36/3bb//lRu7kICe5yIM8yYtML7zq8KrDq7Pf/s30NnobvY3eRu8fr9rf34iz3/7Nf7375E4OcpKL/DjZ+yQv8n758Orm9uPn2W//5r/Pc5yc5CK/66jDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KoPeie9k95J76R30jvpnfROeie9k95F76J30bvoXXyu/nh1GHv22795khd5/xj7t9/+y43cyX+95xr849U3F3mQJ5nrF14FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKhq9nd5Ob6e309vp7fR2eju9nd5Ob9Ab9Aa9QW/QG/QGvX+8Ouw9++2HpWe//eY/Xn1zI3fy+x579tu/uciDPMnve2zk+x4bh1dxciN38ruOAl4FvAp4FfAq4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq7Pf/s30LnoXvYveRe+md9O76d30bno3vZveTe+md7/es9/+ze9zdfbbv/97kPPH27Pf/s2DPMnrx9u//fZvbh9yI//15slBTnKRB/lxI+FVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcZ9Aa9QW/Sm/QmvUlv0pv0Jr1Jb9Kb9Ba9RW/RW/QWvUXvH68Ok89++2Hs2W//5sfns9/+zY3cf4w9++3fnOQiD/L8cTjHIu93vcwPmesIXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8KrgVX0auZODnOQiD/IkLzK9jd5Gb6O30dvobfQ2ehu9jd5Gb3+fq2J+Vcyvzn774e3Zb//mIg/y/PH27Ld/8+NzxYf815snd3KQk1zkx42CVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpenf32b6a36C16B72D3kHvoHfQO+gd9A56B72D3knvpHfSO+md9P7x6jD57Lcfxp799m9e5Mfns9/+ze3H2LPf/s1BTnKRx4/DtSZ5vetlPT7X5jqCVwWvCl4VvCp4VfCq4FXBq4JXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXg3n7gFcDXg3m7YN5+2DePpi3D+btg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YP51WB+NZhfnf3281kazK8G86uz3354e/bbvznJRR4/3o6c5EV+fB7nfjBPbuRODnKSHzcGvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrAa8GvBrwasCrMemd9E56J72TXubtg3n7YN4+mLcP5u2Deftg3j6Ytw/m7YN5+2DePpi3D+btg3n72W8/TD777YexZ7/9myd5kR+fz377YezZb//mTg5ykuvH4bPf/s3zd72c/fZvftfRhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFeTefuEVxNeTebtk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TePplfTeZXk/nVZH41mV+d/fb7WWJ+NZlfnf32w9uz3/7NQU5y/Xh79tu/eZIX+T2nm/NDbuRODvLjxoRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDXh1YRXE15NeDV5Pjh5Pjh5Pjh5PjiZt0/m7Yt5+2Levpi3L+bti3n7Yt6+mLcv5u2Lefti3r6Yty/m7Yt5+9lvP0w+++2HsWe//ZsHeZIX+T2nO/vt39zInRzk/HH47Ld/8/hdL6tP8iK/62jBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8Goxb1/wasGrxbx9MW9fzNsX8/bFvH0xb1/M2xfz9sW8fTFvX8zbF/OrxfxqMb9azK8W86uz334/S8yvFvOrs99+eHv227+5k4P89iiOv/2bB3mS3x7F8bffvD/kRu5kuAGvFrxa8GrBqwWvFrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrzfHDzfHDzfHDzfHAzb9/M2zfz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/M2zfz9rPffph89tsPY89++zcXeZAn+e1RnP32m/NDbuROjh+Hz377N789irPf/s2T/K6jDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrzbx9w6sNrzbz9s28fTNv38zbN/P2zbx9M2/fzNs38/bNvH0zb9/Mrzbzq838ajO/2syvzn77/Sz98SrOZ++PV9+8v3md/fZvbuRODvK/3siT//VGnTzIk7zI++U/XsU8uZE7OchJ/usdJw/yX+86eZH/znn/5fP96uZG7uQgJ7nIgzzJi0xv0Bv0Br1Bb9Ab9Aa9QW/QG/QmvUlv0pv0Jr1Jb9Kb9Ca9SW/RW/QWvUVv0Vv0Fr1Fb9Fb9A56B72D3kHvoHfQO+gdfK7+eJXt5P3yH6++uZH/9WY/OchJLvK/3jzX2h+vvnmR98t/vPpmrt/F9bu4fv949c1FHuRJXmS4seHGpnfTu+nd9G56N72b3k0vvGrwqsGrBq8avDr77d9c5EGe5EWmt9Hb6G30NnobvY3eRm+jt9Hb6P3j1eHt2W8//Dz77d8c5CQXefz4efbbv3mR98vxIbcfY89++zfH77o4++3fXOR3HTV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eBVg1cNXjV41eDV3W+/md5B76R30jvpnfROeie9k95J76R30rvoXfQuehe9i8/VonfR+8erw9uz3/7Nj89nv/2b24+3Z7/9m4Oc5D8+n+txD/IkL/Ljc4dXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXh1dlv/2Z6O72d3k5vp7fT2+nt9HZ6g96gN+gNeoPeoDfoDXqD3j9eHSaf/fbD2LPf/s2dHOQk14+xZ7/9myd5kR+fz3774fDZb//m/rtezn77Nyf5XUcdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1d3v/1meuHV3W+/md5F76Z307vp3fRueje9m95N76Z3v96z3/7NjdzJ73N19tu//3uRx4+3Z7/9mxf58fnstx/env32b+7kIP/x+XNykQd5khf5cSPgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4BXZ7/95qQ36U16k96kN+lNepPepDfpLXqL3qK36C16i96it+j949Vh8tlvP4w9++3f3MidHOQ3Zzj77d88yJO8yPvH4bPf/s3tXS+zk7mO4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwGvAl4FvAp4FfAq4FXAq4RXCa8SXt399puTXORBnuRFprfR2+ht9DZ6G72N3kZvo7fRy/wqmV8l86uz334+S8n8Kplfnf32w9uz3/7Nk7zI+8fbs9/+zY3cyX98/pyc5CIP8iQ/biS8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfDq7Ld/M72D3kHvoHfQO+gd9A56B72D3kHvpHfSO+md9E56J72T3j9eHSaf/fbD2LPffvP6kBu5k98c+Oy3f3ORB3mS14/DZ7/95jO/OtfLbmSuI3iV8CrhVcKrhFcJrxJeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglfFvL3gVcGrYt5ezNuLeXsxby/m7cW8vZi3F/P2Yt5ezNuLeXsxvyrmV8X8qphfFfOrs99+PkvF/KqYX5399sPbs9/+zYM8yevH27PffnN9yI38x+fPyUFOcpEH+XGj4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCV2e//ZvpnfQuepm3F/P2Yt5ezNuLeXsxby/m7cW8vZi3F/P2Yt5ezNuLeXsxby/m7We//TD57Lcfxp799m9+fD777d/cyO853dlv/+YkF3mQ54/DZ7/9m/fvejn77d/cyO86GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GszbB7wa8Gowbx/M2wfz9sG8fTBvH8zbB/P2wbx9MG8fzNsH8/bB/GowvxrMrwbzq8H86uy3388S86vB/Orstx/env32by7yIM8fb89++zc/Pp/99m/+4/Pn5E4OcpKL/Lgx4NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDXg14NWAVwNeDZ4PDp4PDp4PDp4PTubtk3n7ZN4+mbdP5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZN5+9tsPk89++2Hs2W//5kV+fD777d/89ijOfvs3BznJRX57FGe//ZvfHsXZb785PuR3HU14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk3m7RNeTXg1mbdP5u2Teftk3j6Zt0/m7ZN5+2TePpm3T+btk3n7ZH41mV9N5leT+dVkfnX22+9n6ewznGvhj1ff/MfJ8zn/49U3J/mPk+dz+/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32tRq9jd5Gb6O30dvobfR2eju9z3+11vNfrfX8V2s9/9U6++3f/Pe5aicv8n75+a/Wev6rxX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3rzXpnfROehe9Z94eJ//22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99nX3229+nGS/fbHfvthvX/v5rxb77Yv99sV++2K/fe3nv1rst6+7337zbw95sd++7n77ze86Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vti/32xX77Yr99sd++2G9f7Lcv9tsX++2L/fbFfvtiv32x377Yb1/sty/22xf77Yv99sV++2K/fbHfvthvX+y3L/bbF/vta296N5+rM2+vk/c377Pf/s2N3L+M3We//ZuTXOS/3jx5khd5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43ctXH/7zYv8rqMJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvBqwqsJrya8mvDq+dv/ZXonvZPeSe+kd9I76Z30LnoXvYveRe+id9G76F18rp5Ppp399puPT+bmRu4/xp799m9OcpH/+HyuweeTaWe//Zsfn89++ze/63fBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8Gp1eju9nd5Ob6e309vp7fQGvUFv0Bv0Br1Bb9Ab9Aa9Qe/5vXOe3H4sXc8n066//eYkF3n8WLqeT6Zdf/vNj8/X337z+x57/e03x++6uP72m4v8rqMFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8WvBqwasFrxa8ev72f5neRe+md9O76d30bno3vZveTe+m9/3euT1/+7/cyJ0c5Pe5ev72f3mQ54+3Z7/9mx+fz377N7cfb89++zcHOcl/fP6cPMiTvMiPzxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVzvpTXqT3qQ36U16k96kN+lNeoveorfoLXqL3qK36C16i97jZ/hj8n4+mbafT6Zdf/vNQU5y/Ri7n0+mXX/7zYv8+Hz97ePkRu7veplB5jqCVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14dWGVxtebXi14RX+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42/vZb//7LHX87R1/e/88n0w/++3fvMj75eeT6We//Zs7Och/fP6cXORBnuRF/nGjfx6v+ufxqn8er/rn8ap/Hq/65/Gqfx6v+ufxqn8er/on6S16i96it+gteoveorfoLXqL3kHvoHfQO+gd9A56B72D3kHvoHfSO+md9E56J72T3knvpPfM2/Pk/WVs/zyfTP/83jfxL3dykPPL2P55Ppn++b1v4l+e5EXeXw7362+/+Tev69fffjPX0eY62lxHm+t3c/1url941eBVg1cNXjV41eBVg1cNXjV41eBVg1cN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T6Zff/vNj8/X335z+/H2+ttvDnKS/3rz5EGe5EV+fF7wasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFrwasGrBa8WvFqT3knvpHfSO+md9E56J72T3knvonfRu+hd9C56F72L3kXvovf4Gf6YvJ5Ppq/nk+nX335zkJNcP8au55Ppd7/95kV+fL777Z+TG7n/rpe7335zkt91tOHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14teHVhlcbXm14hb+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Ns7/vaOv73jb+/42zv+9o6/veNv7/jbO/72jr+942/v+Nv79befzxLzK/ztfT+fTL/+9psX+fF5P59Mv/72mzs5yH+9eXKRB3mSF/lxY8OrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNrwasOrDa82vNqL3k3vpnfTu+nd9G56N72b3k3v88kE/vbA3x742wN/e+BvD/ztgb898LfH9bevk/eXsfF5Ppn4vPdNxOe9byI+730T8Xk+mfg8n0x83vsm4vPeNxGf976JuPvtn7/cP+TfvC7ufvvNQf5dR/F5vIrP41V8Hq/i83gVn8er+DxexefxKj6PV/F5vIpP0Bv0Br1Bb9Ab9Ca9SW/Sm/QmvUlv0pv0Jr1Jb9Fb9Ba9RW/RW/QWvUVv0Vv0DnoHvYPeQe+gd9A76B30DnoHvZPeSe/kczXpnfSe+VWdPMiTvMj7y9u4/vabG7mT/3rP9biSXORBnuQfN+Kz4MaGGxtubLix4caGGxtubLix4camF141eNXgVYNXDV41eNXgVYNXDV6193ww8LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/va4/vZ18m8OHNfffvJ730S0976JaO99E3H329vJSS7yIE/y+nH47reffHgVJzdyJ7/rqMGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwqsGrBq8avGrwCn974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O1x/e3ns7Tp3fSe+VWdXORBnuT14+31t//l/t43Ef29byKuvz1PDnKSizzIjxsdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFV7/R2eju9QW/QG/QGvUFv0Bv0Br1Bb9Cb9Ca9SW/Sm/QmvWfevk7+PaeL62+/+fG5v/dNRH/vm4i7395ODnKSizzI88fhu99+8/5dL3e//eZGftdRh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eFVh1cdXnV41eEV/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742+P62+Nkehu97bdHEdfffnORB/m3RxHX337z43O8903E9bfnyZ0c5CQX+XEj4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAV5H0Jr1Jb9Jb9Ba9RW/RW/QWvUVv0Vv0Fr2D3kHvoHfQO+g98/Z18m+PIq6//eZFfnyO976JuPvt7eRODnKSizx+HL777Tf/9iji7refvLiO4FXAq4BXAa8CXgW8CngV8CrgVcCrgFcBrwJeBbwKeBXwKuBVwKuAVwmvEl7hbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/Pa6//e+zdPbb/xy5cfbbv/lvL3efHOQk/+v98+VGPp9M5PPJRD6fTOTzM0Q+P0Pk8zNEPj9D5PMzRD4/Q+TzM0QmvUlv0pv0Fr1Fb9Fb9Ba9RW/RW/QWvUXvoHfQO+gd9A56B72D3kHvoHfQO+md9M7f73Dj7Ld/c5KLPMi/3+HG2W//5v3y+T3OzX+94+Tfnnmw3x7stwf77cF+e7DfHuy3B/vtwX57sN8e7LcH++3Bfnuw3x7stwf77cF+e+TzM0Q9P0PU8zNEPT9D1PMzRD0/Q9TzM0Q9P0PU8zNEPT9D1IfeRm+jt9Hb6G30NnobvY3eRm+jt9Pb6e30dno7vZ3eTm+nt9Pb6Q163+8H4+y3//1uK85++zf/8aqfXORBnuS/33l9Tt4v//Hqmxu5k9/1W/Cq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBq4JXNemd9E56J72T3knvpHfSu+hd9J7fO+fJQX6cvP72mwd5khf5cfL6229u5E4Ocv5Yev3tN493LZzfD968yO86GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBrwa8GvBqwKsBr/C3B/72wN8e+NsDf3vgb48Brwa8wt8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72OPvt57M0nk8mzn77zccnc3Mj9x9jz377Nye5yH98/pw8yYv8+Hz227/5Xb8DXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFcDXg14NeDVgFdj0bvoXfQuehe9i95F76J307vp3fRueje9m95N76Z30/t+7xzX354ntx9L5/PJxPW335zkIo8fS+fzycT1t9/8+Hz97Te/77HX335z/K6L62+/ucjvOprwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasKrCa8mvJrwasIr/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O1x9tvvZ2nQO+h9Ppk4++3f/Ph89tu/uf14e/bbvznISf7j87ken08mzn77Ny/y4/OEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dWEVxNeTXg14dV6fobA3x742wN/e+BvD/ztgb898LcH/vbA3x742wN/e+BvD/ztgb898LcH/vbA3x742+P62/+YvJ5PJtbzycT1t98c5CTXj7Hr+WTi+ttvXuTH5+tvHyc3cv9dL9fffnOS33W04NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXi14NWCVwteLXiFvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9sDfHvjbA3974G8P/O2Bvz3wtwf+9jj77fezxPwKf3us55OJs9/+zYv8+LyeTybOfvs3d3KQ//h8rsfnk4n13jcR671vItZ730QseLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG15teLXh1YZXG17tRm+nt9Pb6e30dno7vZ3eTm+nt9Mb9Aa9QW/QG/QGvczb8bfH9bfnyfvH2P18MrHf+yZiv/dNxH7vm4j9fDKxn08m9nvfROz3vonY730Tcf3tfxy+/vab37zu+ttvDvK7jja82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNrza82vBqw6sNr/C3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3B/72wN8e+NsDf3vgbw/87YG/PfC3J/72xN+eZ7/977OU+NsTf3ue/fY/3ubZb//mSV7k/eVtnv32b27kTv7j8+fkJBd5kCf5x438PF7l5/EqP49X+Xm8ys/jVX4er/LzeJWfx6v8PF7lp9Pb6Q16g96gN+gNeoPeoDfoDXqD3qQ36U16k96kN+lNepPepDfpLXqL3qK36C16i96i98zb8+TfHDivv/3k976J/Lz3TeTnvW8ir799npzkIg/yJK8vh/P6208+86tzvbz3D+Znch1NrqPJdfR4lZ/Hq/w8XuXn8So/k+t3cf0urt/Hq/wsehe9i95F76J30bvo3fRueje9m95N76Z307vp3fTCK/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE35742xN/e+JvT/ztib898bcn/vbE355nv/18lvC3J/72PPvth7dnv/2bB3mS14+3Z7/95ve+iWzvfRN59tsPY89++zcnuciD/LjR4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1eNXjV4FWDVw1etaK36C16B72D3kHvoHfQO+gd9A56B72D3knvpHfSO+md9E56z7w9T/49p8vrb7/58bm9901ke++byOtvnycHOclFHuT54/D1t9+83/WyP2SuI3jV4FWDVw1eNXjV4FWDVw1edXjV4VWHVx1edXjV4VWHVx1edXjV4VWHVx1edXiFvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9sTfnvjbE3974m9P/O2Jvz3xtyf+9jz77eezhL898bfn2W8/vD377d9c5EH+7VHk2W//5sfn/t43kWe//TD27Ld/c5CTXOTHjQ6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KrDqw6vOrzq8KpPeie9k95J76J30bvoXfQuehe9i95F76J3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7fR2eju9nd5Ob6e309vpDXqD3qA36A16g96gN+gNeoPepDfpTXqT3qQ36U16k96kN+kteovPVdFb9J75VZ1c5EGe5PXlbV1/+8nvfRP1ee+bqOtvz5ODnOQiD/KPG/V5vKrP41V9Hq/q83hVn8er+jxe1efxqj6PV/V5vKrPpHfSO+ld9C56F72L3kXvonfRu+hd9C56N72b3k3vpnfTu+nd9G56N71v3l742wt/e+FvL/zthb+98LfX9bevk3/P6er622/eL7/3TVR775uou9/eTg5ykos8yPPH4bvffvP+XS93v/3mRn7XUYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgVYNXDV41eNXgFf72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+Nvr+tvPZ2nSO+mdvz2Kuv72m4s8yL89irr+9psfn9t730Rdf/u5HlcnBznJRX7caPCqwasGrxq8avCqwasGrxq8avCqwasGrxq8avCqw6sOrzq86vCqw6sOr/p7Plj42wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e11/+zr5t0dR199+8yI/Pvf3vom6++3t5E4OcpKLPH4cvvvtN//2KOrut5/83jdRHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV51eNXhVYdXHV7hby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/vfC3F/72wt9e+NsLf3vhby/87YW/va6//XyWjp/hXAvHz3Dz317u+ZwfP8PNSf7XW+dz+3wy1Z9PpvrzyVR/foaK52eoeH6GiudnqHh+hornZ6h4foaK52eoeH6GiudnqPjQ2+ht9DZ6G72N3kZvo7fR2+ht9HZ6O72d3k5vp7fT2+nt9HZ6O71Bb9Abv9/h1tlv/+YkF3mQf7/DrbPf/s375fN7nJv/esfJvz3zYr+92G8v9tuL/fZiv73Yby/224v99mK/vdhvL/bbi/32Yr+92G8v9tuL/faKonfQO+gd9A56B72D3kHvoHfQO+id9E56J72T3knvpHfSO+md9E56F72L3kXvonfRu+hd9C56F72L3k3v+/1gnf32v99t1dlv/+Y/XvWTizzIk/z3O69zjfzx6uSz3/7NjdzJ7/pNeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniV8CrhVcKrhFcJrxJeJbxKeJXwKuFVwqsMeoPeoDfoDXqD3qA36E16k97ze+c8OciPk9fffvMgT/IiP05ef/vNjdzJQc4fS6+//ebxuxauv/3mRX7XUcKrhFcJrxJeJbxKeJXwKuFVwquEVwmvEl4lvEp4lfAq4VXCq4RXCa8SXiW8SniFv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73wtxf+9sLfXvjbC3974W8v/O2Fv73Ofvv5LNXzydTZb7/5+GRubuT+Y+zZb//mJBf5j8+fkyd5kR+fz377N7/rt+BVwauCVwWvCl4VvCp4VfCq4FXBq4JXBa8KXhW8KnhV8KrgVcGrglcFryrpTXqT3qQ36U16k96kt+gteoveorfoLXqL3qK36C16z++d8+T2Y2k9n0xdf/vNSS7y+LG0nk+mrr/95sfn62+/+X2Pvf72m+NdF+f3zjcXmesIXhW8KnhV8KrgVcGrglcFrwpeFbwqeFXwquBVwauCVwWvCl4VvCp4VfCq4FXBK/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/+/+Z3kZvo7fR2+ht9HZ6O72d3k5vf58r/O2Fv73G88nU2W//5sfns9/+ze3H27Pf/s1BTvIfnz8nD/IkL/Lj84BXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1YBXA14NeDXg1Rj0DnoHvYPeQe+gd9A76B30DnonvZPeSe+kd9I76Z30TnonvcfP8Mfk8XwyNZ5Ppq6//eYgJ7l+jB3PJ1PX337zIj8+X3/7OLmR+7tedpC5juDVgFcDXg14NeDVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeEV/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742+vst5/PEv72wt9e8/lk6uy3f/MiPz7P55Ops9/+zZ0c5D8+f04u8iBP8iI/bkx4NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFcTXk14NeHVhFdz0rvoXfQuehe9i95F76J30bvoXfRueje9m95N76Z308u8HX97XX97nrx/jF3PJ1PrvW+i1nvfRK33volazydT6/lkar33TdR675uo9d43Udff/sfh62+/+c3rrr/95iC/62jBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8Ap/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/ztdfbb72eJ+RX+9jr77Ye3Z7/9myd5kfePt2e//ZsbuZP/+Pw5OclFHuRJftxY8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFrxa8GrBqwWvFs8H8bcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/va6/vY8+c2Br7/95Pe+idrvfRO13/sm6vrb58lJLvIgT/L6cfj6208+86t1ciN38ruONrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2vNrza8GrDqw2v8LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC31742wt/e+FvL/zthb+98LcX/vbC315nv/1+lphf4W+vs99+eHv22795kCd5/Xh79ttvfu+bqP3eN1Fnv/0w9uy3f3OSizzIcANe7cer8Xm8Gp/Hq/F5vBqfx6vxebwan8er8Xm8Gp/Hq/F5vBqfD72N3kZvo7fR2+ht9DZ6G72N3kZvp7fT2+nt9HZ6O72d3k5vp7fTG/QGvUFv0Bv0Br1n3p4n/57Tjetvv3m//N43MT7vfRPj+tvnyUFOcpEHeX45PK6//eb9vV7G9bff3Mi/62h8Hq/G5/FqfB6vxufxanwer8bn8Wp8Hq/G5/FqfB6vxmfQO+gd9A56B72D3kHvoHfSO+md9E56J72T3knvpHfSO+ld9C56F72L3kXvonfRu+hd9C56N72b3k3vpnfTu+nd9G56N71vfjXOfvv5LOFvH/jbx9lv/+PtOPvt31zkQf7tUYyz3/7N++X3volx9tv/GDvOfvs3BznJRX7caPCq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fXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rcnfXvStyd9e9K3J3170rdn4qvkPJiH+whfJb5KzoN5uI/wVeKr5DzY63l7dnzV8VXHV53zIH178v72pG9P+vakb0/69qRvT/r2pG/PXs/bs+Mr+vakb0/69qRvz855sNfz9uzsr3owF191zoNP3/5w+arjq8558Hl/+8Plq46vOufB27e/zDrjq46vOufBXs/bk7496duTvj3p27Pjq46vOufB3rm+9X3npG/Pjq86vuqcB3s9b8/OefDp2x9m7mBu9VfZq7/Kp29/+LvO95+f5cle/VX26q+yV3+Vt29/+ddfZa/+Knv1V3n79pfb3/8+y7j8N3flv//zP/0//+nf/uU//ed//a//9z/9b//fP/7f//N//bf/8j//5b//t+f//Z//7/94/5P//G//8q//+i//13/8H//23//Lf/0//te//df/+K///b/8/Wf/9Pn7P//4l//fe//n0f/DP//T3130v//jPP/P/ziX/4d///d//w///v8D", "file_map": { "5": { "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n", "path": "std/cmp.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 188ef7d5c4c..c8a17b3c74c 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -245,7 +245,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32918 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32906), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32906 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 106 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32918 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32837), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32838), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32840), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32841), bit_size: Field, value: 0 }, Const { destination: Direct(32842), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32843), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32844), bit_size: Field, value: 1 }, Const { destination: Direct(32845), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32846), bit_size: Field, value: 2 }, Const { destination: Direct(32847), bit_size: Field, value: 3 }, Const { destination: Direct(32848), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32849), bit_size: Field, value: 5 }, Const { destination: Direct(32850), bit_size: Field, value: 6 }, Const { destination: Direct(32851), bit_size: Field, value: 7 }, Const { destination: Direct(32852), bit_size: Integer(U32), value: 8 }, Const { destination: Direct(32853), bit_size: Field, value: 11 }, Const { destination: Direct(32854), bit_size: Field, value: 12 }, Const { destination: Direct(32855), bit_size: Field, value: 13 }, Const { destination: Direct(32856), bit_size: Field, value: 31 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32858), bit_size: Integer(U8), value: 34 }, Const { destination: Direct(32859), bit_size: Field, value: 42 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32863), bit_size: Field, value: 55 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32866), bit_size: Field, value: 72 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 73 }, Const { destination: Direct(32868), bit_size: Field, value: 74 }, Const { destination: Direct(32869), bit_size: Field, value: 76 }, Const { destination: Direct(32870), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32872), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32882), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32884), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32885), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32886), bit_size: Integer(U8), value: 112 }, Const { destination: Direct(32887), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32888), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32889), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32890), bit_size: Field, value: 116 }, Const { destination: Direct(32891), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32892), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32893), bit_size: Field, value: 118 }, Const { destination: Direct(32894), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32895), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32896), bit_size: Field, value: 123 }, Const { destination: Direct(32897), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32898), bit_size: Field, value: 125 }, Const { destination: Direct(32899), bit_size: Field, value: 127 }, Const { destination: Direct(32900), bit_size: Field, value: 132 }, Const { destination: Direct(32901), bit_size: Field, value: 169 }, Const { destination: Direct(32902), bit_size: Field, value: 170 }, Const { destination: Direct(32903), bit_size: Field, value: 171 }, Const { destination: Direct(32904), bit_size: Field, value: 174 }, Const { destination: Direct(32905), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Return, Call { location: 184 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32845) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 190 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 476 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32848) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32852) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 826 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 149 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1061 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1339 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1590 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1736 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2065 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2545 }, Mov { destination: Direct(0), source: Relative(0) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 189 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 272 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 291 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, JumpIf { condition: Relative(8), location: 296 }, Call { location: 3441 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 302 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Direct(32843) }, Mov { destination: Relative(15), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, JumpIf { condition: Relative(6), location: 316 }, Call { location: 3544 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(6) }, Store { destination_pointer: Relative(11), source: Direct(32867) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32884) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32887) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32875) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32895) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32892) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32872) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32891) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32873) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32891) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32885) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32895) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32885) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32885) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32887) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32879) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32872) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32881) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32894) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32861) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(2), rhs: Relative(10) }, JumpIf { condition: Relative(6), location: 441 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(12) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(13) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, Store { destination_pointer: Relative(13), source: Direct(32845) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(12), size: Relative(11) } }, Const { destination: Relative(2), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3547 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 457 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32839) }, JumpIf { condition: Relative(4), location: 462 }, Call { location: 3678 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Direct(32839) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(11) }, Mov { destination: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(1), location: 475 }, Call { location: 3681 }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 558 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 562 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 814 }, Jump { location: 565 }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 573 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(7), bit_size: Integer(U8), value: 77 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32872) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32879) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32872) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32886) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32884) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32879) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32883) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32891) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32873) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32862) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32860) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32895) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32884) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32897) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32861) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, JumpIf { condition: Relative(5), location: 676 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 39 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 12389747999246339213 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(7) } }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32843) }, Mov { destination: Relative(11), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Mov { destination: Relative(5), source: Relative(10) }, JumpIf { condition: Relative(4), location: 688 }, Call { location: 3544 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32867) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32884) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32888) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32887) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32875) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32895) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32892) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32872) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32882) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32891) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32873) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32891) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32885) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32895) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32885) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32877) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32885) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32887) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32879) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32888) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32872) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32883) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32857) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32881) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32876) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32894) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32861) }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(2), rhs: Relative(5) }, JumpIf { condition: Relative(3), location: 813 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(9) }, Mov { destination: Direct(32772), source: Relative(8) }, Mov { destination: Direct(32773), source: Relative(10) }, Call { location: 23 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, Store { destination_pointer: Relative(8), source: Direct(32845) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(7), size: Relative(4) } }, Return, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(5) }, Mov { destination: Relative(9), source: Relative(6) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(4) }, Jump { location: 562 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 908 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 936 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, JumpIf { condition: Relative(5), location: 941 }, Call { location: 3684 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Direct(32843) }, Mov { destination: Relative(12), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(10) }, Mov { destination: Relative(5), source: Relative(11) }, JumpIf { condition: Relative(4), location: 953 }, Call { location: 3544 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(2), bit_size: Integer(U8), value: 120 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 119 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32886) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32874) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32895) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32884) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32892) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32872) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32891) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32897) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32860) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32873) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32891) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32857) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32895) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32889) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32897) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32861) }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(1), location: 1057 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(4) }, IndirectConst { destination_pointer: Relative(9), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(10) }, Mov { destination: Direct(32772), source: Relative(9) }, Mov { destination: Direct(32773), source: Relative(11) }, Call { location: 23 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, Store { destination_pointer: Relative(9), source: Direct(32845) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(3) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(4), size: Relative(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1143 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1151 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1155 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 1319 }, Jump { location: 1158 }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1166 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 1171 }, Call { location: 3687 }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1177 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(7) }, Store { destination_pointer: Relative(9), source: Direct(32870) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32885) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32857) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32877) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32885) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32891) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32857) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32888) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32887) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32857) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32881) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32857) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32895) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32887) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32871) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32881) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32897) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32861) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1256 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 1271 }, Jump { location: 1259 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3690 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32839) }, JumpIf { condition: Relative(2), location: 1270 }, Call { location: 3763 }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1283 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, JumpIf { condition: Relative(9), location: 1316 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, Mov { destination: Relative(12), source: Relative(8) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(13) }, Mov { destination: Direct(32772), source: Relative(12) }, Mov { destination: Direct(32773), source: Relative(14) }, Call { location: 23 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, Store { destination_pointer: Relative(12), source: Direct(32843) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(8), size: Relative(6) } }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 1256 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(9) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, Mov { destination: Relative(2), source: Relative(3) }, Jump { location: 1155 }, Call { location: 184 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1496 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1500 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1561 }, Jump { location: 1503 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1511 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1521 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3766 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(9), location: 1535 }, Call { location: 3858 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3547 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(3), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 3766 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(12) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(1), location: 1560 }, Call { location: 3861 }, Return, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(11) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(8) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(8) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 1500 }, Call { location: 184 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1672 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Direct(32846) }, Mov { destination: Relative(10), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Direct(32853) }, Mov { destination: Relative(10), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Direct(32904) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3864 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1717 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Direct(32845) }, JumpIf { condition: Relative(3), location: 1722 }, Call { location: 4006 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Relative(9) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32838) }, JumpIf { condition: Relative(1), location: 1735 }, Call { location: 4009 }, Return, Call { location: 184 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32846) }, Mov { destination: Relative(8), source: Direct(32847) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32849) }, Mov { destination: Relative(8), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32853) }, Mov { destination: Relative(8), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 1847 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 4012 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4287 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(9) }, Load { destination: Relative(1), source_pointer: Relative(6) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1872 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1883 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32839) }, Mov { destination: Relative(12), source: Direct(32845) }, Mov { destination: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 4337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(1) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1901 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4481 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4287 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(1), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1926 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1937 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32839) }, Mov { destination: Relative(16), source: Direct(32845) }, Mov { destination: Relative(17), source: Direct(32902) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 4760 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5062 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1972 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1983 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32839) }, Mov { destination: Relative(17), source: Direct(32845) }, Mov { destination: Relative(18), source: Direct(32903) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5124 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(14), source: Direct(32846) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5268 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, JumpIf { condition: Relative(11), location: 2016 }, Call { location: 5300 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(6) }, Store { destination_pointer: Relative(11), source: Direct(32847) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32851) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32855) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(10) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5268 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, JumpIf { condition: Relative(6), location: 2037 }, Call { location: 5303 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32847) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32849) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32853) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32855) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5306 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, JumpIf { condition: Relative(6), location: 2064 }, Call { location: 5348 }, Return, Call { location: 184 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32846) }, Mov { destination: Relative(8), source: Direct(32847) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32849) }, Mov { destination: Relative(8), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32853) }, Mov { destination: Relative(8), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5351 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5510 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2192 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4012 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(7), source: Relative(11) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 4287 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2217 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2228 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32839) }, Mov { destination: Relative(14), source: Direct(32845) }, Mov { destination: Relative(15), source: Direct(32896) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2246 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4481 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4287 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(13) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2271 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(3) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2282 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(11) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32839) }, Mov { destination: Relative(16), source: Direct(32845) }, Mov { destination: Relative(17), source: Direct(32898) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 4337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2300 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, Const { destination: Relative(4), bit_size: Field, value: 15 }, Const { destination: Relative(13), bit_size: Field, value: 33 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 5268 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(17) }, Const { destination: Relative(14), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32857) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32880) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32884) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32874) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32887) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32887) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32876) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32874) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32857) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32880) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32876) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32887) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32872) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32880) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32884) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32857) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32877) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32857) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32881) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32876) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32894) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32888) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32864) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32857) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32895) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32881) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32876) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32894) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32888) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32897) }, JumpIf { condition: Relative(13), location: 2434 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(14) } }, Const { destination: Relative(8), bit_size: Field, value: 35 }, Const { destination: Relative(13), bit_size: Field, value: 65 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 5268 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(16) }, JumpIf { condition: Relative(4), location: 2457 }, Call { location: 5303 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32899) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5628 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4760 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(14) }, Mov { destination: Relative(4), source: Relative(15) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5062 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2490 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2501 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32839) }, Mov { destination: Relative(16), source: Direct(32845) }, Mov { destination: Relative(17), source: Direct(32900) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5124 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(1), bit_size: Field, value: 30 }, Const { destination: Relative(4), bit_size: Field, value: 70 }, Const { destination: Relative(13), bit_size: Field, value: 66 }, Const { destination: Relative(14), bit_size: Field, value: 130 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Direct(32854) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(13) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5306 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(17) }, JumpIf { condition: Relative(1), location: 2544 }, Call { location: 5348 }, Return, Call { location: 184 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5779 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(5) }, Mov { destination: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Direct(32839) }, JumpIf { condition: Relative(3), location: 2557 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5779 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(6) }, Mov { destination: Relative(3), source: Relative(7) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32839) }, JumpIf { condition: Relative(4), location: 2568 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Direct(32854) }, Mov { destination: Relative(10), source: Direct(32859) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2636 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, JumpIf { condition: Relative(7), location: 2642 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2648 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6057 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6079 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2673 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(5), location: 2679 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6079 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2695 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(9), location: 2701 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2707 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Direct(32844) }, Mov { destination: Relative(16), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2726 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 2733 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Direct(32844) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6079 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 2749 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(12), location: 2755 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 2761 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Direct(32844) }, Mov { destination: Relative(19), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(5), bit_size: Field, value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Direct(32847) }, Mov { destination: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Direct(32849) }, Mov { destination: Relative(19), source: Direct(32850) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2799 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 2805 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(4) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Direct(32847) }, Mov { destination: Relative(21), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 2822 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 2828 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(4) }, Mov { destination: Relative(20), source: Relative(3) }, Mov { destination: Relative(21), source: Direct(32844) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6079 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 2844 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, JumpIf { condition: Relative(15), location: 2850 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(19) } }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6209 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(21) }, Mov { destination: Relative(15), source: Relative(22) }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Direct(32839) }, JumpIf { condition: Relative(19), location: 2861 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 2867 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(4) }, Mov { destination: Relative(22), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6234 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(3) }, Load { destination: Relative(20), source_pointer: Relative(5) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2884 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Direct(32839) }, JumpIf { condition: Relative(20), location: 2890 }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(22) } }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(15) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2896 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 24 }, Mov { destination: Relative(24), source: Direct(0) }, Mov { destination: Relative(25), source: Relative(5) }, Mov { destination: Relative(26), source: Direct(32839) }, Mov { destination: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(23) }, Call { location: 6283 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(25) }, Mov { destination: Relative(22), source: Relative(26) }, JumpIf { condition: Relative(15), location: 3023 }, Jump { location: 2910 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(2), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32887) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(2) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32887) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(1), size: 19 }), HeapArray(HeapArray { pointer: Relative(6), size: 29 }), MemoryAddress(Direct(32838))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3047 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 3031 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 6283 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(7), source: Relative(11) }, JumpIf { condition: Relative(5), location: 3046 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, Jump { location: 3047 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 3055 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6382 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3070 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32866) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 6716 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32868) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 6843 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32869) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 6978 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 7096 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, Const { destination: Relative(5), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32844) }, Mov { destination: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(8), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32847) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Direct(32847) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Direct(32844) }, Mov { destination: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7427 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(10) }, JumpIf { condition: Relative(3), location: 3251 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, Return, Call { location: 184 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3261 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 3268 }, Call { location: 7519 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 24 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3272 }, Call { location: 7522 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3278 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 7525 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 3294 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32852) }, JumpIf { condition: Relative(7), location: 3298 }, Jump { location: 3297 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 3438 }, Jump { location: 3301 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3308 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 3318 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 3318 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 3322 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 3327 }, Call { location: 7561 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32852) }, JumpIf { condition: Relative(11), location: 3334 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(18) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Not { destination: Relative(19), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(9), location: 3374 }, Jump { location: 3369 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 3372 }, Jump { location: 3384 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Jump { location: 3384 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 3380 }, Call { location: 7561 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 3384 }, Load { destination: Relative(9), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 3387 }, Jump { location: 3438 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(14) }, Mov { destination: Relative(21), source: Relative(17) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(3) }, Mov { destination: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7567 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(11) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Jump { location: 3438 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 3294 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 9417307514377997680 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3457 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7525 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 3473 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(8), location: 3479 }, Jump { location: 3476 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, JumpIf { condition: Relative(8), location: 3541 }, Jump { location: 3482 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3488 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 3498 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 3498 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3502 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3507 }, Call { location: 7561 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32852) }, JumpIf { condition: Relative(10), location: 3514 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 3534 }, Jump { location: 3541 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(8), location: 3537 }, Jump { location: 3541 }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Jump { location: 3541 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 3473 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3556 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7525 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 3572 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 3576 }, Jump { location: 3575 }, Return, Load { destination: Relative(6), source_pointer: Relative(5) }, JumpIf { condition: Relative(6), location: 3675 }, Jump { location: 3579 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3586 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 3596 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 3596 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3600 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3605 }, Call { location: 7561 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32852) }, JumpIf { condition: Relative(10), location: 3612 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(6), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 3632 }, Jump { location: 3675 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 3635 }, Jump { location: 3675 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(10) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 3671 }, Call { location: 7603 }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Jump { location: 3675 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 3572 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14479745468926698352 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17677620431177272765 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Direct(32839) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15535192719431679058 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3776 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3784 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 3789 }, Jump { location: 3804 }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3796 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 3800 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 3806 }, Jump { location: 3803 }, Jump { location: 3804 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Not { destination: Relative(11), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 3828 }, Jump { location: 3855 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3834 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3444 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, JumpIf { condition: Relative(6), location: 3850 }, Jump { location: 3848 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 3855 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(6), location: 3855 }, Jump { location: 3853 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 3855 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 3800 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16567169223151679177 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6895136539169241630 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(3), rhs: Direct(32856) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(3), rhs: Direct(32896) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(3), rhs: Direct(32898) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(3), rhs: Direct(32901) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(3), rhs: Direct(32902) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 3872 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(10), location: 3876 }, Jump { location: 3875 }, Return, Load { destination: Relative(10), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(10), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 3897 }, Jump { location: 4003 }, JumpIf { condition: Relative(5), location: 3955 }, Jump { location: 3899 }, JumpIf { condition: Relative(6), location: 3945 }, Jump { location: 3901 }, JumpIf { condition: Relative(7), location: 3935 }, Jump { location: 3903 }, JumpIf { condition: Relative(8), location: 3925 }, Jump { location: 3905 }, JumpIf { condition: Relative(9), location: 3915 }, Jump { location: 3907 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(3), rhs: Direct(32904) }, JumpIf { condition: Relative(15), location: 3911 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Relative(16) }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(15), rhs: Direct(32863) }, Mov { destination: Relative(10), source: Relative(17) }, Jump { location: 3962 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 3962 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 3962 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 3962 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 3962 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(14), rhs: Direct(32841) }, Not { destination: Relative(17), source: Relative(15), bit_size: U1 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(16), rhs: Direct(32841) }, Not { destination: Relative(18), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(17), rhs: Relative(18) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 3962 }, JumpIf { condition: Relative(10), location: 4003 }, Jump { location: 3964 }, Load { destination: Relative(10), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(10) }, JumpIf { condition: Relative(17), location: 3969 }, Call { location: 7603 }, Load { destination: Relative(10), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(11) }, Store { destination_pointer: Relative(19), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Jump { location: 4003 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 3872 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 955212737754845985 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4046 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 4050 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 4259 }, Jump { location: 4053 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4061 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4232 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 4258 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 4275 }, Jump { location: 4284 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7610 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 4284 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 4050 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32845), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 4308 }, Call { location: 7630 }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 4310 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 4315 }, Jump { location: 4313 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(2) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 4321 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7633 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(2) }, Jump { location: 4310 }, Call { location: 184 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32843) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 4362 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 4365 }, Jump { location: 4480 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4373 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(7), location: 4479 }, Jump { location: 4378 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4386 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7653 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4403 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 4411 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, JumpIf { condition: Relative(13), location: 4477 }, Jump { location: 4415 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7690 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 4431 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4437 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7849 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32839), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 4451 }, Jump { location: 4475 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4457 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 4463 }, Call { location: 7603 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7849 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 4475 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4362 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4362 }, Jump { location: 4480 }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4515 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 4519 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 4732 }, Jump { location: 4522 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4530 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4705 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 4731 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 4748 }, Jump { location: 4757 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7610 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 4757 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 4519 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4810 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 4814 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 5029 }, Jump { location: 4817 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4825 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32887) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5002 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 5028 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 5049 }, Jump { location: 5059 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(9) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7905 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5059 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 4814 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32845), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 5089 }, Call { location: 7630 }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 5091 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 5096 }, Jump { location: 5094 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(2) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5102 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Load { destination: Relative(2), source_pointer: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7934 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(2) }, Jump { location: 5091 }, Call { location: 184 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32843) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 5149 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 5152 }, Jump { location: 5267 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5160 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(7), location: 5266 }, Jump { location: 5165 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5173 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7653 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5190 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 5198 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, JumpIf { condition: Relative(13), location: 5264 }, Jump { location: 5202 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7963 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5218 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 5224 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7849 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32839), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 5238 }, Jump { location: 5262 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5244 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 5250 }, Call { location: 7603 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 7849 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 5262 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5149 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5149 }, Jump { location: 5267 }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5278 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 5282 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 5287 }, Jump { location: 5285 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5282 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5316 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 5320 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 5325 }, Jump { location: 5323 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5320 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5360 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4760 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(3), rhs: Direct(32868) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(3), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(3), rhs: Direct(32890) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 5454 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(8), location: 5462 }, Jump { location: 5457 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 5466 }, Jump { location: 5507 }, Load { destination: Relative(9), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(17) }, JumpIf { condition: Relative(10), location: 5494 }, Jump { location: 5477 }, JumpIf { condition: Relative(11), location: 5491 }, Jump { location: 5479 }, JumpIf { condition: Relative(12), location: 5488 }, Jump { location: 5481 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(3), rhs: Direct(32893) }, JumpIf { condition: Relative(9), location: 5485 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32849) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 5497 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32847) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 5497 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32905) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 5497 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 5497 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5507 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 5454 }, Call { location: 184 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(3), rhs: Direct(32868) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(3), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(3), rhs: Direct(32890) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 5516 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(8), location: 5520 }, Jump { location: 5519 }, Return, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(14) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Not { destination: Relative(18), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(18), rhs: Relative(10) }, JumpIf { condition: Relative(15), location: 5553 }, Jump { location: 5625 }, JumpIf { condition: Relative(5), location: 5572 }, Jump { location: 5555 }, JumpIf { condition: Relative(6), location: 5569 }, Jump { location: 5557 }, JumpIf { condition: Relative(7), location: 5566 }, Jump { location: 5559 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(3), rhs: Direct(32893) }, JumpIf { condition: Relative(15), location: 5563 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32849) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 5575 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32847) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 5575 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32905) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 5575 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32846) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 5575 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(13) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(17) }, Mov { destination: Relative(23), source: Relative(12) }, Mov { destination: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 7567 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(17) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Jump { location: 5625 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 5516 }, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5637 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4760 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(3), rhs: Direct(32866) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 5729 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(8), location: 5737 }, Jump { location: 5732 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 5741 }, Jump { location: 5776 }, Load { destination: Relative(11), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Load { destination: Relative(12), source_pointer: Relative(16) }, JumpIf { condition: Relative(10), location: 5761 }, Jump { location: 5752 }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(3), rhs: Direct(32899) }, JumpIf { condition: Relative(11), location: 5756 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, BinaryFieldOp { destination: Relative(11), op: Mul, lhs: Relative(13), rhs: Direct(32846) }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(12), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(11) }, Mov { destination: Relative(9), source: Relative(13) }, Jump { location: 5766 }, BinaryFieldOp { destination: Relative(11), op: Add, lhs: Relative(13), rhs: Direct(32844) }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(12), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(11) }, Mov { destination: Relative(9), source: Relative(13) }, Jump { location: 5766 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3252 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5776 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 5729 }, Call { location: 184 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 0 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 41 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(1), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(32839) }, Return, Call { location: 184 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5878 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 5885 }, Call { location: 7519 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 5889 }, Call { location: 7522 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5895 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 8127 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 5911 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32848) }, JumpIf { condition: Relative(7), location: 5915 }, Jump { location: 5914 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 6054 }, Jump { location: 5918 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5925 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 5935 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 5935 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 5939 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 5944 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32848) }, JumpIf { condition: Relative(11), location: 5950 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(18) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Not { destination: Relative(19), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(9), location: 5990 }, Jump { location: 5985 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 5988 }, Jump { location: 6000 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Jump { location: 6000 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 5996 }, Call { location: 7561 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 6000 }, Load { destination: Relative(9), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 6003 }, Jump { location: 6054 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(14) }, Mov { destination: Relative(21), source: Relative(17) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(3) }, Mov { destination: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7567 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(11) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Jump { location: 6054 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 5911 }, Call { location: 184 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6283 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(7) }, Mov { destination: Relative(4), source: Relative(8) }, JumpIf { condition: Relative(3), location: 6070 }, Jump { location: 6078 }, JumpIf { condition: Relative(3), location: 6073 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(4), rhs: Direct(32859) }, JumpIf { condition: Relative(1), location: 6077 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Jump { location: 6078 }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6088 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8127 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 6104 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(6), location: 6108 }, Jump { location: 6107 }, Return, Load { destination: Relative(6), source_pointer: Relative(5) }, JumpIf { condition: Relative(6), location: 6206 }, Jump { location: 6111 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6118 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 6128 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6128 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 6132 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 6137 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32848) }, JumpIf { condition: Relative(10), location: 6143 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(6), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 6163 }, Jump { location: 6206 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 6166 }, Jump { location: 6206 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(10) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 6202 }, Call { location: 7603 }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Jump { location: 6206 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 6104 }, Call { location: 184 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 169 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 168 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6232 }, Mov { destination: Relative(5), source: Relative(6) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Jump { location: 6219 }, Mov { destination: Relative(2), source: Direct(32839) }, Return, Call { location: 184 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Direct(32839) }, Return, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6296 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8127 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 6312 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(8), location: 6318 }, Jump { location: 6315 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, JumpIf { condition: Relative(8), location: 6379 }, Jump { location: 6321 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6327 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 6337 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6337 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 6341 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 6346 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32848) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32848) }, JumpIf { condition: Relative(10), location: 6352 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 6372 }, Jump { location: 6379 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(8), location: 6375 }, Jump { location: 6379 }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Jump { location: 6379 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 6312 }, Call { location: 184 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6389 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 8163 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Mov { destination: Relative(6), source: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6406 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(9), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(12), source: Direct(32895) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32881) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32876) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32894) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(9) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32895) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32872) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32882) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32891) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32876) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(9) }, Store { destination_pointer: Relative(11), source: Direct(32895) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32858) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32881) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32884) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32875) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32858) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32864) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32858) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32876) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32875) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32858) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6490 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6494 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(5), location: 6679 }, Jump { location: 6497 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6503 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 8453 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, Mov { destination: Relative(6), source: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6520 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6528 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6532 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(5), location: 6631 }, Jump { location: 6535 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 8722 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Mov { destination: Relative(5), source: Relative(10) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(6) }, Store { destination_pointer: Relative(8), source: Relative(1) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32891) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32884) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32872) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32891) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32895) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32872) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32891) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32897) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6594 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6598 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(1), location: 6602 }, Jump { location: 6601 }, Return, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, JumpIf { condition: Relative(1), location: 6605 }, Jump { location: 6628 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Load { destination: Relative(1), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6614 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6622 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(6), size: 19 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(1)), HeapArray(HeapArray { pointer: Relative(10), size: 16 }), MemoryAddress(Direct(32842))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 6628 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(1) }, Jump { location: 6598 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 6634 }, Jump { location: 6676 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6643 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6283 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Load { destination: Relative(12), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6661 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 6669 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(12), size: 16 }), MemoryAddress(Direct(32845)), MemoryAddress(Relative(5)), MemoryAddress(Relative(11)), HeapArray(HeapArray { pointer: Relative(15), size: 16 }), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32842))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 6676 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6532 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 6682 }, Jump { location: 6713 }, JumpIf { condition: Relative(5), location: 6684 }, Call { location: 7630 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6698 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6706 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(9), size: 16 }), MemoryAddress(Direct(32845)), MemoryAddress(Relative(8)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), HeapArray(HeapArray { pointer: Relative(14), size: 16 }), MemoryAddress(Direct(32842))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 6713 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6494 }, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6725 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 8163 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(3), rhs: Direct(32866) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 6793 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(8), location: 6801 }, Jump { location: 6796 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 6805 }, Jump { location: 6840 }, Load { destination: Relative(11), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Load { destination: Relative(12), source_pointer: Relative(16) }, JumpIf { condition: Relative(10), location: 6825 }, Jump { location: 6816 }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(3), rhs: Direct(32899) }, JumpIf { condition: Relative(11), location: 6820 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, BinaryFieldOp { destination: Relative(11), op: Mul, lhs: Relative(13), rhs: Direct(32846) }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(12), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(11) }, Mov { destination: Relative(9), source: Relative(13) }, Jump { location: 6830 }, BinaryFieldOp { destination: Relative(11), op: Add, lhs: Relative(13), rhs: Direct(32844) }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(12), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(11) }, Mov { destination: Relative(9), source: Relative(13) }, Jump { location: 6830 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 6840 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 6793 }, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6852 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 8163 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(3), rhs: Direct(32868) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(3), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(3), rhs: Direct(32890) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 6922 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(8), location: 6930 }, Jump { location: 6925 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 6934 }, Jump { location: 6975 }, Load { destination: Relative(9), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(17) }, JumpIf { condition: Relative(10), location: 6962 }, Jump { location: 6945 }, JumpIf { condition: Relative(11), location: 6959 }, Jump { location: 6947 }, JumpIf { condition: Relative(12), location: 6956 }, Jump { location: 6949 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(3), rhs: Direct(32893) }, JumpIf { condition: Relative(9), location: 6953 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32849) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 6965 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32847) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 6965 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32905) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 6965 }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(14), rhs: Direct(32846) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 6965 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5869 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 6975 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 6922 }, Call { location: 184 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(3), rhs: Direct(32868) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(3), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(3), rhs: Direct(32890) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 6984 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(8), location: 6988 }, Jump { location: 6987 }, Return, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(14) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Not { destination: Relative(18), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(18), rhs: Relative(10) }, JumpIf { condition: Relative(15), location: 7021 }, Jump { location: 7093 }, JumpIf { condition: Relative(5), location: 7040 }, Jump { location: 7023 }, JumpIf { condition: Relative(6), location: 7037 }, Jump { location: 7025 }, JumpIf { condition: Relative(7), location: 7034 }, Jump { location: 7027 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(3), rhs: Direct(32893) }, JumpIf { condition: Relative(15), location: 7031 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32849) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7043 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32847) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7043 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32905) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7043 }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Direct(32846) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7043 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(13) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(17) }, Mov { destination: Relative(23), source: Relative(12) }, Mov { destination: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 7567 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(17) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Jump { location: 7093 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 6984 }, Call { location: 184 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(3), rhs: Direct(32856) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(3), rhs: Direct(32896) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(3), rhs: Direct(32898) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(3), rhs: Direct(32901) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(3), rhs: Direct(32902) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 7104 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(10), location: 7108 }, Jump { location: 7107 }, Return, Load { destination: Relative(10), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(10), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 7129 }, Jump { location: 7235 }, JumpIf { condition: Relative(5), location: 7187 }, Jump { location: 7131 }, JumpIf { condition: Relative(6), location: 7177 }, Jump { location: 7133 }, JumpIf { condition: Relative(7), location: 7167 }, Jump { location: 7135 }, JumpIf { condition: Relative(8), location: 7157 }, Jump { location: 7137 }, JumpIf { condition: Relative(9), location: 7147 }, Jump { location: 7139 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(3), rhs: Direct(32904) }, JumpIf { condition: Relative(15), location: 7143 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(14), rhs: Relative(16) }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(15), rhs: Direct(32863) }, Mov { destination: Relative(10), source: Relative(17) }, Jump { location: 7194 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7194 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7194 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7194 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(14) }, Mov { destination: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(15), source: Relative(19) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7194 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(14), rhs: Direct(32841) }, Not { destination: Relative(17), source: Relative(15), bit_size: U1 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(16), rhs: Direct(32841) }, Not { destination: Relative(18), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(17), rhs: Relative(18) }, Mov { destination: Relative(10), source: Relative(15) }, Jump { location: 7194 }, JumpIf { condition: Relative(10), location: 7235 }, Jump { location: 7196 }, Load { destination: Relative(10), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32843), rhs: Relative(10) }, JumpIf { condition: Relative(17), location: 7201 }, Call { location: 7603 }, Load { destination: Relative(10), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(11) }, Store { destination_pointer: Relative(19), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Jump { location: 7235 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 7104 }, Call { location: 184 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7247 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 7254 }, Call { location: 7519 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7258 }, Call { location: 7522 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7264 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 8995 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 7280 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 7284 }, Jump { location: 7283 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 7424 }, Jump { location: 7287 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7294 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 7304 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 7304 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7308 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7313 }, Call { location: 7561 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(11), location: 7320 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(18) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Not { destination: Relative(19), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(9), location: 7360 }, Jump { location: 7355 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 7358 }, Jump { location: 7370 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Jump { location: 7370 }, Store { destination_pointer: Relative(18), source: Direct(32842) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 7366 }, Call { location: 7561 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 7370 }, Load { destination: Relative(9), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 7373 }, Jump { location: 7424 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(14) }, Mov { destination: Relative(21), source: Relative(17) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(3) }, Mov { destination: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 9031 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(11) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Jump { location: 7424 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 7280 }, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7437 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7445 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 7450 }, Jump { location: 7465 }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7457 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 7461 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 7467 }, Jump { location: 7464 }, Jump { location: 7465 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Not { destination: Relative(11), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 7489 }, Jump { location: 7516 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7495 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 9041 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, JumpIf { condition: Relative(6), location: 7511 }, Jump { location: 7509 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 7516 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U64, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(6), location: 7516 }, Jump { location: 7514 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 7516 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 7461 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16850003084350092401 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7546 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32843) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9141 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 7585 }, Jump { location: 7587 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 7602 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 7599 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 7592 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 7602 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, BinaryFieldOp { destination: Relative(3), op: LessThan, lhs: Relative(1), rhs: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Call { location: 184 }, Load { destination: Relative(4), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32852) }, JumpIf { condition: Relative(5), location: 7615 }, Call { location: 9218 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, JumpIf { condition: Relative(5), location: 7627 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16954218183513903507 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Load { destination: Relative(4), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 7638 }, Call { location: 9218 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, JumpIf { condition: Relative(5), location: 7650 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 7662 }, Jump { location: 7666 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 7688 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 7687 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 7680 }, Jump { location: 7688 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Call { location: 184 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32856) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(4), rhs: Direct(32896) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32898) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32901) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32902) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 7702 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 7735 }, Jump { location: 7705 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 7710 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(8) }, JumpIf { condition: Relative(7), location: 7715 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Load { destination: Relative(13), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(14), location: 7739 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(16) }, JumpIf { condition: Relative(7), location: 7744 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(8), location: 7805 }, Jump { location: 7749 }, JumpIf { condition: Relative(9), location: 7795 }, Jump { location: 7751 }, JumpIf { condition: Relative(10), location: 7785 }, Jump { location: 7753 }, JumpIf { condition: Relative(11), location: 7775 }, Jump { location: 7755 }, JumpIf { condition: Relative(12), location: 7765 }, Jump { location: 7757 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32904) }, JumpIf { condition: Relative(13), location: 7761 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(14), rhs: Relative(15) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(13), rhs: Direct(32863) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 7812 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 7812 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 7812 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 7812 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 7812 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(14), rhs: Direct(32841) }, Not { destination: Relative(14), source: Relative(13), bit_size: U1 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(15), rhs: Direct(32841) }, Not { destination: Relative(15), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(15) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 7812 }, JumpIf { condition: Relative(2), location: 7814 }, Jump { location: 7846 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32837) }, JumpIf { condition: Relative(14), location: 7819 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(13) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 7844 }, Call { location: 7561 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 7846 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 7702 }, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 7860 }, Jump { location: 7877 }, JumpIf { condition: Direct(32781), location: 7862 }, Jump { location: 7866 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 7876 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 7876 }, Jump { location: 7889 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 7889 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 7903 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 7903 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 7896 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32852) }, JumpIf { condition: Relative(6), location: 7910 }, Call { location: 9218 }, Load { destination: Relative(6), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32845) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Store { destination_pointer: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(4), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(4), location: 7931 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 7939 }, Call { location: 9218 }, Load { destination: Relative(6), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32845) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Store { destination_pointer: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(4), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(4), location: 7960 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, Call { location: 184 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32900) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 7973 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 8028 }, Jump { location: 7976 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(3), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 7981 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, JumpIf { condition: Relative(7), location: 7991 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(11) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(4) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Store { destination_pointer: Relative(6), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Load { destination: Relative(11), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(12), location: 8032 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, JumpIf { condition: Relative(7), location: 8039 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(10), location: 8058 }, Jump { location: 8044 }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32903) }, JumpIf { condition: Relative(11), location: 8048 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 8068 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 7606 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 8068 }, JumpIf { condition: Relative(2), location: 8070 }, Jump { location: 8124 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, JumpIf { condition: Relative(13), location: 8075 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(12) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(14) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, Store { destination_pointer: Relative(18), source: Relative(19) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7581 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(2) }, JumpIf { condition: Relative(12), location: 8122 }, Call { location: 7561 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 8124 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 7973 }, Call { location: 184 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 8148 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32843) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9141 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8201 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 8205 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(6), location: 8420 }, Jump { location: 8208 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 8216 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32887) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8393 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 8419 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 8440 }, Jump { location: 8450 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(9) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9221 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 8450 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 8205 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8481 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 8485 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(6), location: 8694 }, Jump { location: 8488 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 8496 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8667 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 8693 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 8710 }, Jump { location: 8719 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9250 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 8719 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 8485 }, Call { location: 184 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8750 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 8754 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32848) }, JumpIf { condition: Relative(6), location: 8967 }, Jump { location: 8757 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 8765 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32857) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32895) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32891) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32861) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8940 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 8966 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 8983 }, Jump { location: 8992 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9250 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 8992 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 8754 }, Call { location: 184 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 9016 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32843) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9141 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Call { location: 184 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Return, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 9054 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8995 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 9070 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 9076 }, Jump { location: 9073 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, JumpIf { condition: Relative(8), location: 9138 }, Jump { location: 9079 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 9085 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 9095 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 9095 }, Call { location: 7519 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 9099 }, Call { location: 7561 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 9104 }, Call { location: 7561 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 9111 }, Call { location: 7564 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 9131 }, Jump { location: 9138 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(8), location: 9134 }, Jump { location: 9138 }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Jump { location: 9138 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 9070 }, Call { location: 184 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 9148 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 9270 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 9181 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 9185 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 9199 }, Jump { location: 9188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 9300 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(10) }, Return, JumpIf { condition: Relative(5), location: 9201 }, Call { location: 7564 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 9325 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 9185 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5727012404371710682 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32848) }, JumpIf { condition: Relative(6), location: 9226 }, Call { location: 9218 }, Load { destination: Relative(6), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32845) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 7581 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Store { destination_pointer: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(4), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(4), location: 9247 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, Call { location: 184 }, Load { destination: Relative(4), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32848) }, JumpIf { condition: Relative(5), location: 9255 }, Call { location: 9218 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 6 }, Call { location: 7581 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, JumpIf { condition: Relative(5), location: 9267 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, Call { location: 184 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, Mov { destination: Relative(1), source: Relative(2) }, Mov { destination: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(32839) }, Mov { destination: Relative(4), source: Direct(32838) }, Return, Call { location: 184 }, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 9306 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(7) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 9382 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Return, Call { location: 184 }, Load { destination: Relative(6), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 9331 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(7), location: 9358 }, Jump { location: 9335 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(10), location: 9342 }, Call { location: 7564 }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(7), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 9353 }, Call { location: 7561 }, Store { destination_pointer: Relative(1), source: Relative(10) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 9381 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 9382 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7581 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Direct(32843) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Jump { location: 9381 }, Return, Call { location: 184 }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 9385 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 9413 }, Jump { location: 9388 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 9395 }, Call { location: 1058 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32836) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 9417 }, Jump { location: 9440 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 7581 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 9440 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 9385 }]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -264,7 +264,7 @@ expression: artifact "path": "std/collections/bounded_vec.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "17": { @@ -276,7 +276,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_0.snap index 51f6a8ae270..a21ad7afc3f 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_0.snap @@ -241,7 +241,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32903 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32891), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32891 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 91 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32903 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32837), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32838), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32844), bit_size: Field, value: 2 }, Const { destination: Direct(32845), bit_size: Field, value: 3 }, Const { destination: Direct(32846), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32847), bit_size: Field, value: 5 }, Const { destination: Direct(32848), bit_size: Field, value: 6 }, Const { destination: Direct(32849), bit_size: Field, value: 7 }, Const { destination: Direct(32850), bit_size: Integer(U32), value: 8 }, Const { destination: Direct(32851), bit_size: Field, value: 11 }, Const { destination: Direct(32852), bit_size: Field, value: 12 }, Const { destination: Direct(32853), bit_size: Field, value: 13 }, Const { destination: Direct(32854), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32855), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32858), bit_size: Field, value: 55 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32863), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32866), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32869), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32870), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32872), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32882), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32884), bit_size: Field, value: 123 }, Const { destination: Direct(32885), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32886), bit_size: Field, value: 125 }, Const { destination: Direct(32887), bit_size: Field, value: 132 }, Const { destination: Direct(32888), bit_size: Field, value: 169 }, Const { destination: Direct(32889), bit_size: Field, value: 170 }, Const { destination: Direct(32890), bit_size: Field, value: 171 }, Return, Call { location: 1481 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 177 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 196 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 201 }, Call { location: 1679 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 207 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32842) }, Mov { destination: Relative(17), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(8), location: 221 }, Call { location: 1782 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 73 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32877) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32873) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32880) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32880) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32869) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32869) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32877) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32874) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32882) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 347 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(16) }, Mov { destination: Direct(32772), source: Relative(15) }, Mov { destination: Direct(32773), source: Relative(17) }, Call { location: 23 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(16) }, Store { destination_pointer: Relative(15), source: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(14), size: Relative(13) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1785 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 363 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32839) }, JumpIf { condition: Relative(6), location: 368 }, Call { location: 1916 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32839) }, Mov { destination: Relative(16), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(14) }, Mov { destination: Relative(6), source: Relative(15) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(4), location: 381 }, Call { location: 1919 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, Load { destination: Relative(4), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32839) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 466 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 470 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 1469 }, Jump { location: 473 }, Load { destination: Relative(6), source_pointer: Relative(13) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 481 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Const { destination: Relative(9), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(11), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(12), bit_size: Integer(U8), value: 112 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32863) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32878) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32870) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(11) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32863) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32873) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32870) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32878) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32864) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32855) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32883) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32873) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(9), location: 585 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 39 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U64), value: 12389747999246339213 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(16) }, Mov { destination: Direct(32772), source: Relative(15) }, Mov { destination: Direct(32773), source: Relative(17) }, Call { location: 23 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(16) }, Store { destination_pointer: Relative(15), source: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(14), size: Relative(11) } }, Const { destination: Relative(11), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Direct(32842) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, JumpIf { condition: Relative(7), location: 597 }, Call { location: 1782 }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(4), location: 621 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(7) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(13) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(14) }, Call { location: 23 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, Store { destination_pointer: Relative(11), source: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(9) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(7), size: Relative(6) } }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32846) }, Load { destination: Relative(4), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(5), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32850) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32839) }, Load { destination: Relative(11), source_pointer: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 708 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(11) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 736 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 741 }, Call { location: 1922 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32842) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(15) }, Mov { destination: Relative(8), source: Relative(16) }, JumpIf { condition: Relative(7), location: 753 }, Call { location: 1782 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 120 }, Const { destination: Relative(7), bit_size: Integer(U8), value: 119 }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32865) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32866) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32883) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32862) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32881) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32863) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32873) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32867) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32855) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32864) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32854) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32883) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(8), rhs: Relative(6) }, JumpIf { condition: Relative(4), location: 857 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, Mov { destination: Relative(12), source: Relative(7) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(12) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Store { destination_pointer: Relative(12), source: Direct(32843) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(6) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(7), size: Relative(5) } }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 863 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 946 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 954 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 958 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 1449 }, Jump { location: 961 }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 969 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 974 }, Call { location: 1925 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 980 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32861) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32879) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32868) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32876) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32880) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32866) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32867) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32877) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32879) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32867) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32866) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32872) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32867) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32883) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32867) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32879) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32877) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32862) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32872) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32867) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1059 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(5), location: 1401 }, Jump { location: 1062 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(5) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1289 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1293 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(8), location: 1372 }, Jump { location: 1296 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1304 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1314 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1928 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(9), location: 1328 }, Call { location: 2020 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1785 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1928 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(12) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(1), location: 1351 }, Call { location: 2023 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2026 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2236 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2565 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3376 }, Mov { destination: Direct(0), source: Relative(0) }, Return, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(9) }, Mov { destination: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(9) }, Mov { destination: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(8) }, Jump { location: 1293 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1413 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(10), location: 1446 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(9) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(13) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, Store { destination_pointer: Relative(13), source: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(5) } }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(5) }, Jump { location: 1059 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Load { destination: Relative(4), source_pointer: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(6) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(4) }, Jump { location: 958 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(13) }, Mov { destination: Relative(17), source: Relative(14) }, Mov { destination: Relative(18), source: Relative(4) }, Mov { destination: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 470 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 1486 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1499 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 1506 }, Call { location: 5315 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 24 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1510 }, Call { location: 5318 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1516 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5321 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 1532 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32850) }, JumpIf { condition: Relative(7), location: 1536 }, Jump { location: 1535 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 1676 }, Jump { location: 1539 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1546 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 1556 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 1556 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 1560 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 1565 }, Call { location: 5357 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32850) }, JumpIf { condition: Relative(11), location: 1572 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(18) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Not { destination: Relative(19), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(9), location: 1612 }, Jump { location: 1607 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 1610 }, Jump { location: 1622 }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Jump { location: 1622 }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 1618 }, Call { location: 5357 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 1622 }, Load { destination: Relative(9), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 1625 }, Jump { location: 1676 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(14) }, Mov { destination: Relative(21), source: Relative(17) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(3) }, Mov { destination: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5363 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(11) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 1676 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 1532 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 9417307514377997680 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1695 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5321 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 1711 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32850) }, JumpIf { condition: Relative(8), location: 1717 }, Jump { location: 1714 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, JumpIf { condition: Relative(8), location: 1779 }, Jump { location: 1720 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1726 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 1736 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 1736 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1740 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1745 }, Call { location: 5357 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32850) }, JumpIf { condition: Relative(10), location: 1752 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 1772 }, Jump { location: 1779 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(8), location: 1775 }, Jump { location: 1779 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Direct(32841) }, Jump { location: 1779 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 1711 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1794 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5321 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 1810 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32850) }, JumpIf { condition: Relative(6), location: 1814 }, Jump { location: 1813 }, Return, Load { destination: Relative(6), source_pointer: Relative(5) }, JumpIf { condition: Relative(6), location: 1913 }, Jump { location: 1817 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1824 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 1834 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 1834 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1838 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1843 }, Call { location: 5357 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32850) }, JumpIf { condition: Relative(10), location: 1850 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(6), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 1870 }, Jump { location: 1913 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 1873 }, Jump { location: 1913 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(10) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 1909 }, Call { location: 5399 }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Jump { location: 1913 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 1810 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14479745468926698352 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17677620431177272765 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1938 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1946 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 1951 }, Jump { location: 1966 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1958 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(2), source: Direct(32839) }, Jump { location: 1962 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32850) }, JumpIf { condition: Relative(6), location: 1968 }, Jump { location: 1965 }, Jump { location: 1966 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Not { destination: Relative(11), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 1990 }, Jump { location: 2017 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1996 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, JumpIf { condition: Relative(6), location: 2012 }, Jump { location: 2010 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 2017 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(6), location: 2017 }, Jump { location: 2015 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 2017 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 1962 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16567169223151679177 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6895136539169241630 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2108 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Direct(32847) }, Mov { destination: Relative(11), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Direct(32844) }, Mov { destination: Relative(11), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Direct(32851) }, Mov { destination: Relative(11), source: Direct(32847) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Direct(32839) }, Jump { location: 2139 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32850) }, JumpIf { condition: Relative(2), location: 2169 }, Jump { location: 2142 }, Load { destination: Relative(1), source_pointer: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 2150 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, JumpIf { condition: Relative(3), location: 2155 }, Call { location: 5402 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Direct(32843) }, Mov { destination: Relative(9), source: Direct(32844) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1682 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(7) }, Mov { destination: Relative(3), source: Relative(8) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32838) }, JumpIf { condition: Relative(1), location: 2168 }, Call { location: 5405 }, Return, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, Not { destination: Relative(2), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(2), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 2190 }, Jump { location: 2233 }, BinaryFieldOp { destination: Relative(2), op: Mul, lhs: Relative(8), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(2), rhs: Direct(32858) }, JumpIf { condition: Relative(9), location: 2233 }, Jump { location: 2194 }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 2200 }, Call { location: 5399 }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(6) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(5), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(2) }, Store { destination_pointer: Relative(8), source: Direct(32841) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Store { destination_pointer: Relative(4), source: Relative(11) }, Jump { location: 2233 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2139 }, Call { location: 1481 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32844) }, Mov { destination: Relative(8), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32847) }, Mov { destination: Relative(8), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32851) }, Mov { destination: Relative(8), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 2347 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5408 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5683 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(9) }, Load { destination: Relative(1), source_pointer: Relative(6) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2372 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2383 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32839) }, Mov { destination: Relative(12), source: Direct(32843) }, Mov { destination: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5743 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(1) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2401 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6006 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5683 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(1), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2426 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2437 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32839) }, Mov { destination: Relative(16), source: Direct(32843) }, Mov { destination: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5743 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 6285 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 6605 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2472 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2483 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32839) }, Mov { destination: Relative(17), source: Direct(32843) }, Mov { destination: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 6685 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(14), source: Direct(32844) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 6967 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, JumpIf { condition: Relative(11), location: 2516 }, Call { location: 6999 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(6) }, Store { destination_pointer: Relative(11), source: Direct(32845) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32849) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32853) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(10) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6967 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, JumpIf { condition: Relative(6), location: 2537 }, Call { location: 7002 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32845) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32847) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32849) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32853) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 7005 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, JumpIf { condition: Relative(6), location: 2564 }, Call { location: 7047 }, Return, Call { location: 1481 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32839) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(3) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Direct(32844) }, Mov { destination: Relative(9), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(3) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Direct(32847) }, Mov { destination: Relative(9), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(3) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Direct(32851) }, Mov { destination: Relative(9), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2676 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6285 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(11) }, Mov { destination: Relative(8), source: Relative(12) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(6) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Mov { destination: Relative(1), source: Direct(32839) }, Jump { location: 2767 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32850) }, JumpIf { condition: Relative(7), location: 3349 }, Jump { location: 2770 }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32839) }, Jump { location: 2776 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32850) }, JumpIf { condition: Relative(4), location: 3262 }, Jump { location: 2779 }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2787 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5408 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(11) }, Mov { destination: Relative(8), source: Relative(12) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5683 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(12) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2812 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2823 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Direct(32839) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Direct(32884) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5743 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2841 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 6006 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5683 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(13) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2866 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(13) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2877 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(14) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Direct(32839) }, Mov { destination: Relative(19), source: Direct(32843) }, Mov { destination: Relative(20), source: Direct(32886) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 5743 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2895 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Const { destination: Relative(6), bit_size: Field, value: 15 }, Const { destination: Relative(16), bit_size: Field, value: 33 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Direct(32848) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(9) }, Mov { destination: Relative(21), source: Relative(17) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(18) }, Call { location: 6967 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(16), source: Relative(20) }, Const { destination: Relative(17), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(17) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32876) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32879) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32854) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32871) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32875) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32865) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32876) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32877) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32877) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32865) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32879) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32854) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32871) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32879) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32877) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32863) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32879) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32871) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32876) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32875) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32854) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32876) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32868) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32854) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32872) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32882) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32878) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32859) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32854) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32883) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32872) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32882) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32878) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32885) }, JumpIf { condition: Relative(16), location: 3029 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, Mov { destination: Relative(20), source: Relative(19) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(21) }, Mov { destination: Direct(32772), source: Relative(20) }, Mov { destination: Direct(32773), source: Relative(22) }, Call { location: 23 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(20), source: Direct(32842) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(21) }, Mov { destination: Direct(32772), source: Relative(20) }, Mov { destination: Direct(32773), source: Relative(22) }, Call { location: 23 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Trap { revert_data: HeapVector { pointer: Relative(19), size: Relative(17) } }, Const { destination: Relative(9), bit_size: Field, value: 35 }, Const { destination: Relative(16), bit_size: Field, value: 65 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(9) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(13) }, Mov { destination: Relative(20), source: Relative(17) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6967 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(19) }, JumpIf { condition: Relative(6), location: 3052 }, Call { location: 7002 }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3058 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(4) }, Mov { destination: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6285 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(18) }, Mov { destination: Relative(13), source: Relative(19) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(6) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Mov { destination: Relative(1), source: Direct(32839) }, Jump { location: 3149 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32850) }, JumpIf { condition: Relative(7), location: 3234 }, Jump { location: 3152 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 6285 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(7) }, Mov { destination: Relative(3), source: Relative(8) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6605 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 3179 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 3190 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Direct(32839) }, Mov { destination: Relative(9), source: Direct(32843) }, Mov { destination: Relative(10), source: Direct(32887) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 6685 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: 30 }, Const { destination: Relative(4), bit_size: Field, value: 70 }, Const { destination: Relative(6), bit_size: Field, value: 66 }, Const { destination: Relative(7), bit_size: Field, value: 130 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Direct(32852) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7005 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(10) }, JumpIf { condition: Relative(2), location: 3233 }, Call { location: 7047 }, Return, Load { destination: Relative(7), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3238 }, Jump { location: 3259 }, Load { destination: Relative(7), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(9), rhs: Direct(32844) }, BinaryFieldOp { destination: Relative(9), op: Mul, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 3259 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(7) }, Jump { location: 3149 }, Load { destination: Relative(4), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(10) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(11) }, Not { destination: Relative(14), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(11), location: 3295 }, Jump { location: 3346 }, BinaryFieldOp { destination: Relative(6), op: Mul, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(12) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5363 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, Store { destination_pointer: Relative(14), source: Relative(6) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(5), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 5377 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Jump { location: 3346 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 2776 }, Load { destination: Relative(7), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3353 }, Jump { location: 3373 }, Load { destination: Relative(7), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(9), rhs: Direct(32845) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 1490 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 3373 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(7) }, Jump { location: 2767 }, Call { location: 1481 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(2) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Const { destination: Relative(3), bit_size: Field, value: 42 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Direct(32852) }, Mov { destination: Relative(9), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3446 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 3452 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3458 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Direct(32842) }, Mov { destination: Relative(13), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(11) }, Mov { destination: Relative(8), source: Relative(12) }, JumpIf { condition: Relative(5), location: 3472 }, Jump { location: 3480 }, JumpIf { condition: Relative(5), location: 3475 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(8), rhs: Relative(3) }, JumpIf { condition: Relative(4), location: 3479 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, Jump { location: 3480 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(2) }, Mov { destination: Relative(6), source: Relative(1) }, Mov { destination: Relative(7), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 7337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 3496 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(5) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32839) }, JumpIf { condition: Relative(3), location: 3502 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, Const { destination: Relative(3), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 7337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3518 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32839) }, JumpIf { condition: Relative(5), location: 3524 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(4), source_pointer: Relative(3) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3530 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(3), bit_size: Field, value: 1 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Direct(32844) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3550 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32839) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32838) }, JumpIf { condition: Relative(8), location: 3557 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3573 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32839) }, JumpIf { condition: Relative(9), location: 3579 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3585 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Direct(32844) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Field, value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32845) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32847) }, Mov { destination: Relative(16), source: Direct(32848) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 3623 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 3629 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, Mov { destination: Relative(17), source: Direct(32845) }, Mov { destination: Relative(18), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 3646 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 3652 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 7337 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3668 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, JumpIf { condition: Relative(12), location: 3674 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(8) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3680 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 3735 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Direct(32839) }, Mov { destination: Relative(22), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(18) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(20) }, Mov { destination: Relative(17), source: Relative(21) }, Const { destination: Relative(18), bit_size: Integer(U8), value: 34 }, JumpIf { condition: Relative(8), location: 3863 }, Jump { location: 3750 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(6), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32861) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32854) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32881) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32863) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32873) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32867) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32854) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32868) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32876) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32877) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32854) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32872) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32867) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32882) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32854) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32883) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32872) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32871) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32866) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32859) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32879) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32877) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32871) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32869) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32855) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32873) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32867) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32869) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32879) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32870) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32859) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32857) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32885) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(5), size: 19 }), HeapArray(HeapArray { pointer: Relative(8), size: 29 }), MemoryAddress(Direct(32838))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3885 }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 3869 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Direct(32839) }, Mov { destination: Relative(22), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7238 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(20) }, Mov { destination: Relative(7), source: Relative(21) }, JumpIf { condition: Relative(5), location: 3884 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Jump { location: 3885 }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3891 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Direct(32839) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7467 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(20) }, Mov { destination: Relative(8), source: Relative(21) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3908 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Const { destination: Relative(9), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(11), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32882) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32873) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32880) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(9), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(11) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32872) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32868) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32885) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 3992 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 3996 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32846) }, JumpIf { condition: Relative(7), location: 5278 }, Jump { location: 3999 }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4005 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4034 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 4038 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32846) }, JumpIf { condition: Relative(7), location: 5250 }, Jump { location: 4041 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 4049 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(11) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32880) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32868) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32881) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32863) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32870) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32880) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32870) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32863) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32881) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32868) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32862) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32885) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32880) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32869) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32854) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32872) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32862) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32885) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, Load { destination: Relative(11), source_pointer: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 4220 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32839) }, JumpIf { condition: Relative(11), location: 4246 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(15) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(17) }, Mov { destination: Direct(32772), source: Relative(16) }, Mov { destination: Direct(32773), source: Relative(18) }, Call { location: 23 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(17) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32839) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(15), size: Relative(14) } }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 4252 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 4260 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4268 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 4272 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32846) }, JumpIf { condition: Relative(6), location: 5247 }, Jump { location: 4275 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 4302 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 4306 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32846) }, JumpIf { condition: Relative(8), location: 5219 }, Jump { location: 4309 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32860) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32863) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32866) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32870) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32866) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32870) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32863) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32862) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32855) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32869) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32854) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32863) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32862) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32873) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32867) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32839) }, JumpIf { condition: Relative(7), location: 4501 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(10) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(12) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(13) }, Call { location: 23 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(11), source: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32839) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(10), size: Relative(8) } }, Load { destination: Relative(5), source_pointer: Relative(9) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 4507 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4511 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(5), location: 5216 }, Jump { location: 4514 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4522 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4536 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 7467 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4603 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(8), location: 5188 }, Jump { location: 4606 }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 4616 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7467 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32840) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4683 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(10), location: 5161 }, Jump { location: 4686 }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Const { destination: Relative(5), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4693 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(6), location: 5074 }, Jump { location: 4696 }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4698 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(5), location: 5004 }, Jump { location: 4701 }, Const { destination: Relative(1), bit_size: Integer(U64), value: 0 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32839) }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32839) }, Const { destination: Relative(7), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7775 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(8), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Direct(32845) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7775 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32845) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7775 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(6) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7775 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4839 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4847 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 4852 }, Jump { location: 4867 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4859 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 4863 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 4872 }, Jump { location: 4866 }, Jump { location: 4867 }, Load { destination: Relative(1), source_pointer: Relative(5) }, JumpIf { condition: Relative(1), location: 4871 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Not { destination: Relative(12), source: Relative(7), bit_size: U1 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(12), rhs: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 4894 }, Jump { location: 4944 }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4900 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 4914 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 7933 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(17) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(32839) }, Jump { location: 4930 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(9), location: 4947 }, Jump { location: 4933 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(12) }, JumpIf { condition: Relative(7), location: 4939 }, Jump { location: 4937 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 4944 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U64, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(7), location: 4944 }, Jump { location: 4942 }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Jump { location: 4944 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(7) }, Jump { location: 4863 }, Load { destination: Relative(9), source_pointer: Relative(15) }, JumpIf { condition: Relative(9), location: 5001 }, Jump { location: 4950 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(7) }, JumpIf { condition: Relative(14), location: 4958 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(7) }, JumpIf { condition: Relative(17), location: 4958 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 4962 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 4967 }, Call { location: 5357 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(17), op: Div, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 4974 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4994 }, Jump { location: 5001 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(17), rhs: Relative(10) }, JumpIf { condition: Relative(9), location: 4997 }, Jump { location: 5001 }, Store { destination_pointer: Relative(8), source: Direct(32841) }, Store { destination_pointer: Relative(12), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Direct(32841) }, Jump { location: 5001 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(9) }, Jump { location: 4930 }, Load { destination: Relative(5), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Not { destination: Relative(5), source: Relative(12), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 5025 }, Jump { location: 5071 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(9), rhs: Direct(32840) }, Not { destination: Relative(10), source: Relative(5), bit_size: U1 }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(11), rhs: Direct(32840) }, Not { destination: Relative(12), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 5071 }, Jump { location: 5032 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 5038 }, Call { location: 5399 }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(6) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(5), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Jump { location: 5071 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4698 }, Load { destination: Relative(6), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(10) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(14) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Not { destination: Relative(18), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(18), rhs: Relative(10) }, JumpIf { condition: Relative(15), location: 5107 }, Jump { location: 5158 }, BinaryFieldOp { destination: Relative(10), op: Mul, lhs: Relative(14), rhs: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(13) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(17) }, Mov { destination: Relative(23), source: Relative(12) }, Mov { destination: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5363 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(17) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Load { destination: Relative(15), source_pointer: Relative(9) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(8) }, Store { destination_pointer: Relative(18), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(9), source: Relative(15) }, Jump { location: 5158 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 4693 }, Load { destination: Relative(10), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 5165 }, Jump { location: 5185 }, Load { destination: Relative(10), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Load { destination: Relative(11), source_pointer: Relative(15) }, BinaryFieldOp { destination: Relative(10), op: Mul, lhs: Relative(12), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(10) }, Mov { destination: Relative(17), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5185 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 4683 }, Load { destination: Relative(8), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 5192 }, Jump { location: 5213 }, Load { destination: Relative(8), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Load { destination: Relative(11), source_pointer: Relative(15) }, BinaryFieldOp { destination: Relative(8), op: Add, lhs: Relative(12), rhs: Relative(3) }, BinaryFieldOp { destination: Relative(12), op: Mul, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(10) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(8) }, Mov { destination: Relative(17), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 7050 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5213 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 4603 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4511 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Not { destination: Relative(11), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 5235 }, Jump { location: 5244 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 7969 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5244 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(8) }, Jump { location: 4306 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4272 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(7), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(7), bit_size: U1 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(7), location: 5266 }, Jump { location: 5275 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7969 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5275 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 4038 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(8) }, JumpIf { condition: Relative(7), location: 5281 }, Jump { location: 5312 }, JumpIf { condition: Relative(7), location: 5283 }, Call { location: 7989 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(12) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5297 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 5305 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(11), size: 16 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(10)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(15), size: 16 }), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 5312 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 3996 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16850003084350092401 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5342 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7992 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 5381 }, Jump { location: 5383 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 5398 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 5395 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 5388 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 5398 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 955212737754845985 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5442 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 5446 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32850) }, JumpIf { condition: Relative(6), location: 5655 }, Jump { location: 5449 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5457 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32855) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32869) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5628 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 5654 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 5671 }, Jump { location: 5680 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 8141 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 5680 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 5446 }, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32843), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 5704 }, Call { location: 7989 }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 5706 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 5711 }, Jump { location: 5709 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(2) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5717 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32837) }, JumpIf { condition: Relative(9), location: 5727 }, Call { location: 8161 }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Store { destination_pointer: Relative(11), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(7), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(2) }, JumpIf { condition: Relative(7), location: 5738 }, Call { location: 5357 }, Store { destination_pointer: Relative(5), source: Relative(9) }, Store { destination_pointer: Relative(4), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(2) }, Jump { location: 5706 }, Call { location: 1481 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(6), bit_size: Field, value: 31 }, Const { destination: Relative(7), bit_size: Field, value: 174 }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 5770 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(8), location: 5773 }, Jump { location: 6005 }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5781 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32839) }, JumpIf { condition: Relative(9), location: 6004 }, Jump { location: 5786 }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5794 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8164 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(15), source: Direct(32774) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(8), source_pointer: Relative(12) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 5811 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Store { destination_pointer: Relative(3), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 5819 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 6002 }, Jump { location: 5823 }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(13) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Direct(32837) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Relative(6) }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(4), rhs: Direct(32884) }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32886) }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32888) }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(4), rhs: Direct(32889) }, Mov { destination: Relative(9), source: Relative(13) }, Jump { location: 5834 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, JumpIf { condition: Relative(19), location: 5919 }, Jump { location: 5837 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32837) }, JumpIf { condition: Relative(10), location: 5842 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(16) }, JumpIf { condition: Relative(11), location: 5847 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(16) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Store { destination_pointer: Relative(17), source: Relative(11) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 5873 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, JumpIf { condition: Relative(16), location: 5879 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8201 }, Mov { destination: Relative(17), source: Direct(32773) }, Mov { destination: Relative(18), source: Direct(32774) }, Store { destination_pointer: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(14) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Store { destination_pointer: Relative(3), source: Relative(17) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Direct(32839), rhs: Relative(12) }, JumpIf { condition: Relative(9), location: 5893 }, Jump { location: 5917 }, Load { destination: Relative(9), source_pointer: Relative(17) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5899 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 5905 }, Call { location: 5399 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8201 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 5917 }, Mov { destination: Relative(5), source: Relative(8) }, Jump { location: 5770 }, Load { destination: Relative(20), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, JumpIf { condition: Relative(21), location: 5923 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(9) }, Load { destination: Relative(21), source_pointer: Relative(23) }, JumpIf { condition: Relative(11), location: 5928 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(14) }, Load { destination: Relative(22), source_pointer: Relative(24) }, JumpIf { condition: Relative(12), location: 5958 }, Jump { location: 5933 }, BinaryFieldOp { destination: Relative(20), op: LessThan, lhs: Relative(21), rhs: Relative(22) }, JumpIf { condition: Relative(15), location: 5956 }, Jump { location: 5936 }, JumpIf { condition: Relative(16), location: 5954 }, Jump { location: 5938 }, JumpIf { condition: Relative(17), location: 5952 }, Jump { location: 5940 }, JumpIf { condition: Relative(18), location: 5950 }, Jump { location: 5942 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(4), rhs: Relative(7) }, JumpIf { condition: Relative(20), location: 5946 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(23) } }, BinaryFieldOp { destination: Relative(20), op: Mul, lhs: Relative(21), rhs: Relative(22) }, BinaryFieldOp { destination: Relative(21), op: Equals, lhs: Relative(20), rhs: Direct(32858) }, Mov { destination: Relative(19), source: Relative(21) }, Jump { location: 5965 }, Mov { destination: Relative(19), source: Relative(20) }, Jump { location: 5965 }, Mov { destination: Relative(19), source: Relative(20) }, Jump { location: 5965 }, Mov { destination: Relative(19), source: Relative(20) }, Jump { location: 5965 }, Mov { destination: Relative(19), source: Relative(20) }, Jump { location: 5965 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(21), rhs: Direct(32840) }, Not { destination: Relative(21), source: Relative(20), bit_size: U1 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(22), rhs: Direct(32840) }, Not { destination: Relative(22), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(22) }, Mov { destination: Relative(19), source: Relative(20) }, Jump { location: 5965 }, JumpIf { condition: Relative(19), location: 5967 }, Jump { location: 5999 }, Load { destination: Relative(19), source_pointer: Relative(1) }, Load { destination: Relative(20), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, JumpIf { condition: Relative(21), location: 5972 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(9) }, Load { destination: Relative(22), source_pointer: Relative(24) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(23), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Store { destination_pointer: Relative(25), source: Relative(22) }, Mov { destination: Direct(32771), source: Relative(23) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(9) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(1), source: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, JumpIf { condition: Relative(21), location: 5997 }, Call { location: 5357 }, Store { destination_pointer: Relative(10), source: Relative(19) }, Jump { location: 5999 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Mov { destination: Relative(9), source: Relative(19) }, Jump { location: 5834 }, Mov { destination: Relative(5), source: Relative(8) }, Jump { location: 5770 }, Jump { location: 6005 }, Return, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6040 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6044 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32850) }, JumpIf { condition: Relative(6), location: 6257 }, Jump { location: 6047 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6055 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32855) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32869) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6230 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 6256 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 6273 }, Jump { location: 6282 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 8141 }, Mov { destination: Direct(0), source: Relative(0) }, Jump { location: 6282 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 6044 }, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6335 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6339 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32850) }, JumpIf { condition: Relative(6), location: 6554 }, Jump { location: 6342 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6350 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32855) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32869) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6527 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 6553 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 6574 }, Jump { location: 6602 }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32850) }, JumpIf { condition: Relative(8), location: 6579 }, Call { location: 8161 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(8) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 6599 }, Call { location: 5357 }, Store { destination_pointer: Relative(5), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Jump { location: 6602 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 6339 }, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32843), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 6632 }, Call { location: 7989 }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6634 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 6639 }, Jump { location: 6637 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Return, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(2) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6645 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, JumpIf { condition: Relative(10), location: 6660 }, Call { location: 8161 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Store { destination_pointer: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, Store { destination_pointer: Relative(12), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(7), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(2) }, JumpIf { condition: Relative(7), location: 6680 }, Call { location: 5357 }, Store { destination_pointer: Relative(5), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(2) }, Jump { location: 6634 }, Call { location: 1481 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 6710 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 6713 }, Jump { location: 6966 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6721 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32839) }, JumpIf { condition: Relative(7), location: 6965 }, Jump { location: 6726 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6734 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8164 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6751 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 6759 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 6963 }, Jump { location: 6763 }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, Mov { destination: Relative(7), source: Relative(11) }, Jump { location: 6771 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, JumpIf { condition: Relative(14), location: 6879 }, Jump { location: 6774 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32837) }, JumpIf { condition: Relative(8), location: 6779 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 6789 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, Store { destination_pointer: Relative(21), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, Store { destination_pointer: Relative(9), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, Store { destination_pointer: Relative(10), source: Relative(16) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6833 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 6839 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8201 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32839), rhs: Relative(13) }, JumpIf { condition: Relative(7), location: 6853 }, Jump { location: 6877 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6859 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(9), location: 6865 }, Call { location: 5399 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 8201 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 6877 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 6710 }, Load { destination: Relative(15), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32837) }, JumpIf { condition: Relative(16), location: 6883 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, JumpIf { condition: Relative(9), location: 6889 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(10) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryFieldOp { destination: Relative(15), op: LessThan, lhs: Relative(17), rhs: Relative(18) }, JumpIf { condition: Relative(13), location: 6901 }, Jump { location: 6895 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32890) }, JumpIf { condition: Relative(17), location: 6899 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6903 }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6903 }, JumpIf { condition: Relative(14), location: 6905 }, Jump { location: 6960 }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Direct(32837) }, JumpIf { condition: Relative(17), location: 6910 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 5377 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Store { destination_pointer: Relative(1), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 6958 }, Call { location: 5357 }, Store { destination_pointer: Relative(8), source: Relative(14) }, Jump { location: 6960 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(14) }, Jump { location: 6771 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 6710 }, Jump { location: 6966 }, Return, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6977 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 6981 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 6986 }, Jump { location: 6984 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6981 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 7015 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 7019 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 7024 }, Jump { location: 7022 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 7019 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7059 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 7066 }, Call { location: 5315 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7070 }, Call { location: 5318 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7076 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 8257 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 7092 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32846) }, JumpIf { condition: Relative(7), location: 7096 }, Jump { location: 7095 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 7235 }, Jump { location: 7099 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7106 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 7116 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 7116 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7120 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7125 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32846) }, JumpIf { condition: Relative(11), location: 7131 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(18) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Not { destination: Relative(19), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(9), location: 7171 }, Jump { location: 7166 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 7169 }, Jump { location: 7181 }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Jump { location: 7181 }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 7177 }, Call { location: 5357 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 7181 }, Load { destination: Relative(9), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 7184 }, Jump { location: 7235 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(14) }, Mov { destination: Relative(21), source: Relative(17) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(3) }, Mov { destination: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 5363 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(11) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Relative(13) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 7235 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 7092 }, Call { location: 1481 }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7251 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8257 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 7267 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(8), location: 7273 }, Jump { location: 7270 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Return, Load { destination: Relative(8), source_pointer: Relative(2) }, JumpIf { condition: Relative(8), location: 7334 }, Jump { location: 7276 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7282 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 7292 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 7292 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7296 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7301 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32846) }, JumpIf { condition: Relative(10), location: 7307 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 7327 }, Jump { location: 7334 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(8), location: 7330 }, Jump { location: 7334 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Direct(32841) }, Jump { location: 7334 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 7267 }, Call { location: 1481 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7346 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8257 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(11) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Mov { destination: Relative(4), source: Direct(32839) }, Jump { location: 7362 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(6), location: 7366 }, Jump { location: 7365 }, Return, Load { destination: Relative(6), source_pointer: Relative(5) }, JumpIf { condition: Relative(6), location: 7464 }, Jump { location: 7369 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7376 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, JumpIf { condition: Relative(10), location: 7386 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 7386 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7390 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(8), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7395 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32846) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32846) }, JumpIf { condition: Relative(10), location: 7401 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(6), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 7421 }, Jump { location: 7464 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(12), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 7424 }, Jump { location: 7464 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(10) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Relative(14) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 7460 }, Call { location: 5399 }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Jump { location: 7464 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 7362 }, Call { location: 1481 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32839) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7505 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 7509 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32846) }, JumpIf { condition: Relative(6), location: 7724 }, Jump { location: 7512 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7520 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32863) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32868) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32855) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32864) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32869) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32862) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32867) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7697 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, JumpIf { condition: Relative(6), location: 7723 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32843) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Return, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, Not { destination: Relative(8), source: Relative(6), bit_size: U1 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, JumpIf { condition: Relative(6), location: 7744 }, Jump { location: 7772 }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32846) }, JumpIf { condition: Relative(8), location: 7749 }, Call { location: 8161 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(8) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 5377 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 7769 }, Call { location: 5357 }, Store { destination_pointer: Relative(5), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Jump { location: 7772 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(6) }, Jump { location: 7509 }, Call { location: 1481 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7784 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 7791 }, Call { location: 5315 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7795 }, Call { location: 5318 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7801 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 7933 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 7817 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 7821 }, Jump { location: 7820 }, Return, Load { destination: Relative(7), source_pointer: Relative(6) }, JumpIf { condition: Relative(7), location: 7930 }, Jump { location: 7824 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7831 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, JumpIf { condition: Relative(11), location: 7841 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, JumpIf { condition: Relative(13), location: 7841 }, Call { location: 5315 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7845 }, Call { location: 5357 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, JumpIf { condition: Relative(12), location: 7850 }, Call { location: 5357 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(11), location: 7857 }, Call { location: 5360 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Not { destination: Relative(14), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Or, bit_size: U1, lhs: Relative(15), rhs: Relative(14) }, JumpIf { condition: Relative(9), location: 7881 }, Jump { location: 7876 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(13), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 7879 }, Jump { location: 7891 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Jump { location: 7891 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(9), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 7887 }, Call { location: 5357 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Jump { location: 7891 }, Load { destination: Relative(9), source_pointer: Relative(7) }, JumpIf { condition: Relative(9), location: 7894 }, Jump { location: 7930 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(14), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(13), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Store { destination_pointer: Relative(13), source: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 5377 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 7930 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 7817 }, Call { location: 1481 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7954 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7992 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Call { location: 1481 }, Load { destination: Relative(4), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32846) }, JumpIf { condition: Relative(5), location: 7974 }, Call { location: 8161 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 6 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(5), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, JumpIf { condition: Relative(5), location: 7986 }, Call { location: 5357 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16954218183513903507 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1481 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7999 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(6) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 8046 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32839) }, Jump { location: 8050 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 8077 }, Jump { location: 8053 }, Load { destination: Relative(1), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U1, lhs: Relative(1), rhs: Direct(32838) }, JumpIf { condition: Relative(2), location: 8058 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(3) } }, Const { destination: Relative(1), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 8293 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Store { destination_pointer: Relative(8), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 8079 }, Call { location: 5360 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U1, lhs: Relative(10), rhs: Direct(32838) }, JumpIf { condition: Relative(11), location: 8089 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, JumpIf { condition: Relative(10), location: 8115 }, Jump { location: 8092 }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, JumpIf { condition: Relative(13), location: 8099 }, Call { location: 5360 }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 8110 }, Call { location: 5357 }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(8), source: Relative(12) }, Jump { location: 8138 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 8293 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 5377 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Store { destination_pointer: Relative(13), source: Relative(5) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Store { destination_pointer: Relative(8), source: Relative(11) }, Jump { location: 8138 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 8050 }, Call { location: 1481 }, Load { destination: Relative(4), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32850) }, JumpIf { condition: Relative(5), location: 8146 }, Call { location: 8161 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Mov { destination: Direct(32771), source: Relative(5) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 5377 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(5), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, JumpIf { condition: Relative(5), location: 8158 }, Call { location: 5357 }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5727012404371710682 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 8173 }, Jump { location: 8177 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 8199 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 8198 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 8191 }, Jump { location: 8199 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 8212 }, Jump { location: 8229 }, JumpIf { condition: Direct(32781), location: 8214 }, Jump { location: 8218 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 8228 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 8228 }, Jump { location: 8241 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 8241 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 8255 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 8255 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 8248 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, Call { location: 1481 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 8278 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7992 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(3), source: Relative(8) }, Cast { destination: Relative(6), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(6), bit_size: Field }, Cast { destination: Relative(3), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Call { location: 1481 }, Mov { destination: Relative(5), source: Direct(32839) }, Jump { location: 8296 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 8324 }, Jump { location: 8299 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 8306 }, Call { location: 1487 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32836) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 8328 }, Jump { location: 8351 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 5377 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 8351 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 8296 }]" ], - "debug_symbols": "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mIocDDm6DwqoYCpy+83RfTAVuRnl6D44wQVetkhxnmxfDcIrnyRXaKCDAU5wgZl7/bDZOlcooIIDNNDBtI3ECS5wN+bwPyigggNMhSUGOMEF7sYc8wcFVHCABmJTbDnmrxcGruyXK9yNOeYPCqhg/1jZL1foYID5y1+jW/oxTkusdklLzEAHA6xd0hJb4G70ByigggOsXdISdzDACS5wF94dNdcuf90dNTfGAxRQwQEa6GCAE8QW2Ca2iW1im9gmtoltYpvYJraJbdXRyrrbcw4qOEADHQxwgrXvXnd7zo37AeZmFIm5eV7bw91Rc1BABQdooIMBTjAHw0rcjffovlFABQdooIMBThCbYFNsik2x3aM7ElOxExfIihqsqMGKGqyo+6LZI9FAB/OimSROcIHYDJthM2zGz2L8LMbPYvwsxs+SY/4gNr8V//u///DTn/7yr7//2x//8ud//ttf//CHn373P/0v/uun3/3j//z0n7//6x/+/Leffvfn//7Tn/7hp//n93/67/yP/us/f//n/Pzb7//6/H+fX/cPf/635+cz8N//+Kc/XPS//8BfPz7/03WV1fzj57lx/7l//e+vi6T336945++t/36Pz/5+fP73zx2CnoDnXuDxWYJ9njBXr4HHp2vAP/97ld2LoPo84O6M+XcR8XnEyO0iE55bjH4S8GotjGt/da+FMf2d9ZiXIe4Ek/VWwnUx5U5webyTkHeQnASTdxJCemt4zvy9lXBdQD0Je7+TMK+Ovzvhedn9nYRlnfC8rPZWwuxv8bz09Ma43P0lnldD3vl7q83pec3inbrQG9PzMsVnf391iH06LB/XQes9Kp+nA59F6OObleHqovpuabg6pr5XG16uCekarzLfW5my4sP3eCtCu0Q9cb8VMbo+6HPn/V6Ez46Y730Rs/4iz/Prd8bGqoC99jt/v3twP68FvRHwPLHs3cXz6sw7i8D+5nlF5tMK9aJEPU8v+scM+zziu3vu8Svsusf3992v1sSU3iafE8RvrcxpuyNivBexe1WsF7vvVxHL+yddnw/x1xGr18V+vLcUe/b4fF6jfWt4jD6KeF4P+/SY8sWm+TxZqjH6PEP69Acx/+bWbfH9rfu6evm9rfvlmtDZCbreW5m6a1f+PC2cb0UMl46Y+60I66Oy53mfvBWRL/K+I3z4exGrRvqIF+crryI4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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -260,7 +260,7 @@ expression: artifact "path": "std/collections/bounded_vec.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "17": { @@ -272,7 +272,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index d0e629e9c53..4725f241ab7 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/hashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -241,7 +241,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32850 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32838), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32838 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 38 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32850 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32837), bit_size: Integer(U32), value: 3 }, Return, Call { location: 18782 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U1), value: 0 }, Const { destination: Relative(8), bit_size: Field, value: 0 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(9), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(10) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Store { destination_pointer: Relative(11), source: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 129 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Const { destination: Relative(9), bit_size: Field, value: 18446744073709551616 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Relative(4) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(19) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(3) }, Store { destination_pointer: Relative(18), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 170 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(13), location: 18752 }, Jump { location: 173 }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(16) }, Load { destination: Relative(19), source_pointer: Relative(17) }, Load { destination: Relative(20), source_pointer: Relative(14) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 182 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(22), size: Relative(23) }, output: HeapArray { pointer: Relative(24), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(20) }, Store { destination_pointer: Relative(17), source: Relative(19) }, Const { destination: Relative(13), bit_size: Integer(U1), value: 1 }, Store { destination_pointer: Relative(18), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(14), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(14), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 208 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(17), location: 18640 }, Jump { location: 211 }, Load { destination: Relative(14), source_pointer: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(11) }, Load { destination: Relative(17), source_pointer: Relative(14) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 219 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, JumpIf { condition: Relative(17), location: 224 }, Call { location: 18791 }, Load { destination: Relative(15), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 230 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, Load { destination: Relative(20), source_pointer: Relative(14) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 244 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Mov { destination: Relative(23), source: Relative(22) }, Store { destination_pointer: Relative(23), source: Relative(8) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(8) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(8) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(9) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(4) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(8) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(8) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(23), source: Relative(20) }, Store { destination_pointer: Relative(24), source: Relative(3) }, Store { destination_pointer: Relative(25), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 284 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(17), location: 18610 }, Jump { location: 287 }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(18), source_pointer: Relative(23) }, Load { destination: Relative(20), source_pointer: Relative(24) }, Load { destination: Relative(21), source_pointer: Relative(18) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(21) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 296 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(22), source: Relative(17) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(20) }, Store { destination_pointer: Relative(25), source: Relative(13) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Load { destination: Relative(17), source_pointer: Relative(18) }, Cast { destination: Relative(20), source: Relative(17), bit_size: Integer(U32) }, Cast { destination: Relative(18), source: Relative(20), bit_size: Field }, Cast { destination: Relative(17), source: Relative(18), bit_size: Integer(U32) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 320 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(20), location: 18545 }, Jump { location: 323 }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(19) }, JumpIf { condition: Relative(14), location: 327 }, Call { location: 18794 }, Const { destination: Relative(14), bit_size: Integer(U8), value: 73 }, Const { destination: Relative(17), bit_size: Integer(U8), value: 110 }, Const { destination: Relative(18), bit_size: Integer(U8), value: 115 }, Const { destination: Relative(19), bit_size: Integer(U8), value: 101 }, Const { destination: Relative(20), bit_size: Integer(U8), value: 114 }, Const { destination: Relative(21), bit_size: Integer(U8), value: 116 }, Const { destination: Relative(22), bit_size: Integer(U8), value: 100 }, Const { destination: Relative(23), bit_size: Integer(U8), value: 32 }, Const { destination: Relative(24), bit_size: Integer(U8), value: 123 }, Const { destination: Relative(25), bit_size: Integer(U8), value: 118 }, Const { destination: Relative(26), bit_size: Integer(U8), value: 97 }, Const { destination: Relative(27), bit_size: Integer(U8), value: 108 }, Const { destination: Relative(28), bit_size: Integer(U8), value: 117 }, Const { destination: Relative(29), bit_size: Integer(U8), value: 125 }, Const { destination: Relative(30), bit_size: Integer(U8), value: 98 }, Const { destination: Relative(31), bit_size: Integer(U8), value: 103 }, Const { destination: Relative(32), bit_size: Integer(U8), value: 111 }, Const { destination: Relative(33), bit_size: Integer(U8), value: 102 }, Const { destination: Relative(34), bit_size: Integer(U8), value: 104 }, Const { destination: Relative(35), bit_size: Integer(U8), value: 109 }, Const { destination: Relative(36), bit_size: Integer(U8), value: 107 }, Const { destination: Relative(37), bit_size: Integer(U8), value: 121 }, Const { destination: Relative(38), bit_size: Integer(U8), value: 46 }, Mov { destination: Relative(39), source: Direct(1) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(40) }, IndirectConst { destination_pointer: Relative(39), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Mov { destination: Relative(41), source: Relative(40) }, Store { destination_pointer: Relative(41), source: Relative(14) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(17) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(18) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(20) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(21) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(22) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(24) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(25) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(26) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(27) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(28) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(29) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(30) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(28) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(21) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(31) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(32) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(21) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(24) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(31) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(32) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(21) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(29) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(33) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(32) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(20) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(21) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(34) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(18) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(26) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(35) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(23) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(36) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(19) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(37) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(38) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(6), rhs: Relative(15) }, JumpIf { condition: Relative(14), location: 475 }, Const { destination: Relative(40), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(41), source: Direct(1) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(42) }, Mov { destination: Relative(42), source: Relative(41) }, IndirectConst { destination_pointer: Relative(42), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Const { destination: Relative(44), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(43) }, Mov { destination: Direct(32772), source: Relative(42) }, Mov { destination: Direct(32773), source: Relative(44) }, Call { location: 23 }, Const { destination: Relative(43), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(43) }, Store { destination_pointer: Relative(42), source: Relative(5) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(6) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(15) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(41), size: Relative(40) } }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(14), source_pointer: Relative(6) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(40), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(40), source: Relative(40), bit_size: U1 }, JumpIf { condition: Relative(40), location: 482 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(14) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(40), source: Relative(14) }, Store { destination_pointer: Relative(40), source: Relative(8) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(40), source: Relative(8) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(40), source: Relative(8) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(40), source: Relative(9) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(40), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(41), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(43), source: Direct(1) }, Const { destination: Relative(44), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(44) }, IndirectConst { destination_pointer: Relative(43), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Mov { destination: Relative(45), source: Relative(44) }, Store { destination_pointer: Relative(45), source: Relative(4) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, Store { destination_pointer: Relative(45), source: Relative(8) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, Store { destination_pointer: Relative(45), source: Relative(8) }, Store { destination_pointer: Relative(14), source: Relative(43) }, Store { destination_pointer: Relative(40), source: Relative(6) }, Store { destination_pointer: Relative(41), source: Relative(3) }, Store { destination_pointer: Relative(42), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 522 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 18515 }, Jump { location: 525 }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(40) }, Load { destination: Relative(43), source_pointer: Relative(41) }, Load { destination: Relative(44), source_pointer: Relative(15) }, Const { destination: Relative(45), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(45), rhs: Relative(44) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 534 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(44) }, Mov { destination: Relative(44), source: Direct(1) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(46) }, IndirectConst { destination_pointer: Relative(44), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(46), size: Relative(47) }, output: HeapArray { pointer: Relative(48), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(14), source: Relative(6) }, Store { destination_pointer: Relative(40), source: Relative(44) }, Store { destination_pointer: Relative(41), source: Relative(43) }, Store { destination_pointer: Relative(42), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(14) }, Cast { destination: Relative(15), source: Relative(6), bit_size: Integer(U32) }, Cast { destination: Relative(14), source: Relative(15), bit_size: Field }, Cast { destination: Relative(6), source: Relative(14), bit_size: Integer(U32) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 558 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(15), location: 18413 }, Jump { location: 561 }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 569 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 574 }, Call { location: 18797 }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(40), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(40), source: Relative(40), bit_size: U1 }, JumpIf { condition: Relative(40), location: 583 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(40) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(41), source: Relative(40) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(9) }, Mov { destination: Relative(40), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(41), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(44), source: Direct(1) }, Const { destination: Relative(45), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(45) }, IndirectConst { destination_pointer: Relative(44), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, Mov { destination: Relative(46), source: Relative(45) }, Store { destination_pointer: Relative(46), source: Relative(4) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(8) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(8) }, Store { destination_pointer: Relative(40), source: Relative(44) }, Store { destination_pointer: Relative(41), source: Relative(11) }, Store { destination_pointer: Relative(42), source: Relative(3) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 623 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(11), location: 18383 }, Jump { location: 626 }, Load { destination: Relative(11), source_pointer: Relative(40) }, Load { destination: Relative(14), source_pointer: Relative(41) }, Load { destination: Relative(15), source_pointer: Relative(42) }, Load { destination: Relative(44), source_pointer: Relative(14) }, Const { destination: Relative(45), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(45), rhs: Relative(44) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 635 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(44) }, Mov { destination: Relative(44), source: Direct(1) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(46) }, IndirectConst { destination_pointer: Relative(44), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(46), size: Relative(47) }, output: HeapArray { pointer: Relative(48), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(40), source: Relative(11) }, Store { destination_pointer: Relative(41), source: Relative(44) }, Store { destination_pointer: Relative(42), source: Relative(15) }, Store { destination_pointer: Relative(43), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(14) }, Cast { destination: Relative(15), source: Relative(11), bit_size: Integer(U32) }, Cast { destination: Relative(14), source: Relative(15), bit_size: Field }, Cast { destination: Relative(11), source: Relative(14), bit_size: Integer(U32) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 659 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(15), location: 18323 }, Jump { location: 662 }, Load { destination: Relative(6), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 666 }, Call { location: 18800 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, Load { destination: Relative(6), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, Load { destination: Relative(40), source_pointer: Relative(11) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(40) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 751 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(40) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(40) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(40) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(9) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 24 }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 769 }, BinaryIntOp { destination: Relative(41), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(41), location: 18080 }, Jump { location: 772 }, Load { destination: Relative(11), source_pointer: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(11) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(15) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 780 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(15) }, Const { destination: Relative(15), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(42), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(43), bit_size: Integer(U8), value: 112 }, Const { destination: Relative(44), bit_size: Integer(U8), value: 49 }, Const { destination: Relative(45), bit_size: Integer(U8), value: 44 }, Mov { destination: Relative(46), source: Direct(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(47) }, IndirectConst { destination_pointer: Relative(46), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Mov { destination: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(48), source: Relative(15) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(26) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(18) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(34) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(42) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(26) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(43) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(27) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(17) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(31) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(34) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(35) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(28) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(18) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(30) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(44) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(45) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(31) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(32) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(24) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(27) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(17) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(29) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(38) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(3) }, JumpIf { condition: Relative(15), location: 886 }, Const { destination: Relative(42), bit_size: Integer(U32), value: 39 }, Mov { destination: Relative(47), source: Direct(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(48) }, Mov { destination: Relative(48), source: Relative(47) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U64), value: 12389747999246339213 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(49) }, Mov { destination: Direct(32772), source: Relative(48) }, Mov { destination: Direct(32773), source: Relative(50) }, Call { location: 23 }, Const { destination: Relative(49), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(49) }, Store { destination_pointer: Relative(48), source: Relative(3) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(14) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(47), size: Relative(42) } }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, Load { destination: Relative(42), source_pointer: Relative(11) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(46), rhs: Relative(42) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 898 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(42) }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(47) }, IndirectConst { destination_pointer: Relative(42), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Mov { destination: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(9) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Mov { destination: Relative(53), source: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(6) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, Store { destination_pointer: Relative(47), source: Relative(51) }, Store { destination_pointer: Relative(48), source: Relative(42) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 938 }, BinaryIntOp { destination: Relative(41), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(41), location: 18050 }, Jump { location: 941 }, Load { destination: Relative(41), source_pointer: Relative(47) }, Load { destination: Relative(42), source_pointer: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(42) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 950 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(51) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(53) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(53), size: Relative(54) }, output: HeapArray { pointer: Relative(55), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(47), source: Relative(41) }, Store { destination_pointer: Relative(48), source: Relative(51) }, Store { destination_pointer: Relative(49), source: Relative(46) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(3) }, Load { destination: Relative(41), source_pointer: Relative(42) }, Cast { destination: Relative(46), source: Relative(41), bit_size: Integer(U32) }, Cast { destination: Relative(42), source: Relative(46), bit_size: Field }, Cast { destination: Relative(41), source: Relative(42), bit_size: Integer(U32) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 974 }, BinaryIntOp { destination: Relative(46), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(46), location: 17985 }, Jump { location: 977 }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(15) }, JumpIf { condition: Relative(6), location: 981 }, Call { location: 18794 }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(10), rhs: Relative(11) }, JumpIf { condition: Relative(6), location: 1005 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(41) }, Mov { destination: Relative(41), source: Relative(15) }, IndirectConst { destination_pointer: Relative(41), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(42) }, Mov { destination: Direct(32772), source: Relative(41) }, Mov { destination: Direct(32773), source: Relative(46) }, Call { location: 23 }, Const { destination: Relative(42), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(42) }, Store { destination_pointer: Relative(41), source: Relative(5) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(10) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(11) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(15), size: Relative(14) } }, Const { destination: Relative(6), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(11), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(39) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(41), source: Relative(39) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(7) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(15) }, Mov { destination: Relative(41), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(12) }, Load { destination: Relative(42), source_pointer: Relative(15) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(46), rhs: Relative(42) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 1093 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(42) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(42) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(42) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(51) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(52), source: Relative(51) }, Store { destination_pointer: Relative(52), source: Relative(10) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, Store { destination_pointer: Relative(42), source: Relative(50) }, Store { destination_pointer: Relative(47), source: Relative(15) }, Store { destination_pointer: Relative(48), source: Relative(3) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1133 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(15), location: 17955 }, Jump { location: 1136 }, Load { destination: Relative(15), source_pointer: Relative(42) }, Load { destination: Relative(46), source_pointer: Relative(47) }, Load { destination: Relative(50), source_pointer: Relative(48) }, Load { destination: Relative(51), source_pointer: Relative(46) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 1145 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(51) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(53) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(53), size: Relative(54) }, output: HeapArray { pointer: Relative(55), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(42), source: Relative(15) }, Store { destination_pointer: Relative(47), source: Relative(51) }, Store { destination_pointer: Relative(48), source: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(42) }, Cast { destination: Relative(46), source: Relative(15), bit_size: Integer(U32) }, Cast { destination: Relative(42), source: Relative(46), bit_size: Field }, Cast { destination: Relative(15), source: Relative(42), bit_size: Integer(U32) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1169 }, BinaryIntOp { destination: Relative(46), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(46), location: 17843 }, Jump { location: 1172 }, Load { destination: Relative(11), source_pointer: Relative(39) }, Load { destination: Relative(15), source_pointer: Relative(41) }, Load { destination: Relative(42), source_pointer: Relative(11) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(46), rhs: Relative(42) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 1180 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(42) }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(48), op: Div, bit_size: U32, lhs: Relative(42), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(15) }, JumpIf { condition: Relative(47), location: 1187 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(42), rhs: Relative(40) }, JumpIf { condition: Relative(15), location: 1190 }, Call { location: 18806 }, Load { destination: Relative(15), source_pointer: Relative(11) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(15) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 1196 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(15) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(51) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(52), source: Relative(51) }, Store { destination_pointer: Relative(52), source: Relative(10) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(50) }, Store { destination_pointer: Relative(47), source: Relative(11) }, Store { destination_pointer: Relative(48), source: Relative(3) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1236 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(11), location: 17813 }, Jump { location: 1239 }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(42), source_pointer: Relative(47) }, Load { destination: Relative(46), source_pointer: Relative(48) }, Load { destination: Relative(50), source_pointer: Relative(42) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 1248 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(52), size: Relative(53) }, output: HeapArray { pointer: Relative(54), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(11) }, Store { destination_pointer: Relative(47), source: Relative(50) }, Store { destination_pointer: Relative(48), source: Relative(46) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Cast { destination: Relative(42), source: Relative(11), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(42), bit_size: Field }, Cast { destination: Relative(11), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1272 }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(42), location: 17701 }, Jump { location: 1275 }, Load { destination: Relative(11), source_pointer: Relative(39) }, Load { destination: Relative(15), source_pointer: Relative(41) }, Load { destination: Relative(39), source_pointer: Relative(11) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(39) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 1283 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(39) }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, JumpIf { condition: Relative(39), location: 1288 }, Call { location: 18809 }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, Load { destination: Relative(42), source_pointer: Relative(11) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(46), rhs: Relative(42) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 1300 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(42) }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(47) }, IndirectConst { destination_pointer: Relative(42), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Mov { destination: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(8) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(9) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Mov { destination: Relative(53), source: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(10) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, Store { destination_pointer: Relative(47), source: Relative(51) }, Store { destination_pointer: Relative(48), source: Relative(42) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1340 }, BinaryIntOp { destination: Relative(41), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(41), location: 17671 }, Jump { location: 1343 }, Load { destination: Relative(41), source_pointer: Relative(47) }, Load { destination: Relative(42), source_pointer: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(42) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 1352 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(51) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(53) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(53), size: Relative(54) }, output: HeapArray { pointer: Relative(55), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(47), source: Relative(41) }, Store { destination_pointer: Relative(48), source: Relative(51) }, Store { destination_pointer: Relative(49), source: Relative(46) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(3) }, Load { destination: Relative(41), source_pointer: Relative(42) }, Cast { destination: Relative(46), source: Relative(41), bit_size: Integer(U32) }, Cast { destination: Relative(42), source: Relative(46), bit_size: Field }, Cast { destination: Relative(41), source: Relative(42), bit_size: Integer(U32) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1376 }, BinaryIntOp { destination: Relative(46), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(16) }, JumpIf { condition: Relative(46), location: 17606 }, Jump { location: 1379 }, Load { destination: Relative(10), source_pointer: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(39) }, JumpIf { condition: Relative(10), location: 1383 }, Call { location: 18794 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 120 }, Const { destination: Relative(39), bit_size: Integer(U8), value: 99 }, Const { destination: Relative(41), bit_size: Integer(U8), value: 119 }, Const { destination: Relative(42), bit_size: Integer(U8), value: 95 }, Mov { destination: Relative(46), source: Direct(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(47) }, IndirectConst { destination_pointer: Relative(46), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Mov { destination: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(48), source: Relative(10) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(15) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(43) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(39) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(22) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(24) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(17) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(41) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(42) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(25) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(26) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(27) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(28) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(19) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(29) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(45) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(30) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(28) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(31) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(32) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(23) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(24) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(31) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(32) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(21) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(29) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(38) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(11), rhs: Relative(14) }, JumpIf { condition: Relative(10), location: 1489 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(41), source: Direct(1) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(43) }, Mov { destination: Relative(43), source: Relative(41) }, IndirectConst { destination_pointer: Relative(43), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(47) }, Mov { destination: Direct(32772), source: Relative(43) }, Mov { destination: Direct(32773), source: Relative(48) }, Call { location: 23 }, Const { destination: Relative(47), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(47) }, Store { destination_pointer: Relative(43), source: Relative(5) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(14) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(11) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(41), size: Relative(15) } }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1495 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(10) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, Load { destination: Relative(41), source_pointer: Relative(10) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(41) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 1578 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(41) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(10) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 1586 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(46) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(46) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1603 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(11), location: 17355 }, Jump { location: 1606 }, Load { destination: Relative(10), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(41), source_pointer: Relative(10) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(41) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 1614 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(41) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Direct(32835) }, JumpIf { condition: Relative(10), location: 1619 }, Call { location: 18812 }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(41), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(41), source: Relative(41), bit_size: U1 }, JumpIf { condition: Relative(41), location: 1625 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(41) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(46), source: Relative(41) }, Store { destination_pointer: Relative(46), source: Relative(8) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(8) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(8) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(9) }, Const { destination: Relative(41), bit_size: Integer(U8), value: 78 }, Const { destination: Relative(46), bit_size: Integer(U8), value: 105 }, Mov { destination: Relative(47), source: Direct(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(48) }, IndirectConst { destination_pointer: Relative(47), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(48) }, Store { destination_pointer: Relative(49), source: Relative(41) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(32) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(21) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(23) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(33) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(32) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(28) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(17) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(22) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(23) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(46) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(17) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(18) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(19) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(20) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(21) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(19) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(22) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(23) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(36) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(19) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(37) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(23) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(24) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(19) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(17) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(21) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(20) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(37) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(42) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(36) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(19) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(37) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(29) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1719 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(11), location: 17144 }, Jump { location: 1722 }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(43), source: Relative(11) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(12) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(43), source: Relative(15) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(8) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, Load { destination: Relative(43), source_pointer: Relative(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 1949 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(43) }, Mov { destination: Relative(43), source: Direct(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(48) }, IndirectConst { destination_pointer: Relative(43), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(48) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(9) }, Load { destination: Relative(48), source_pointer: Relative(43) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 1970 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(48) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 1974 }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(47), location: 16653 }, Jump { location: 1977 }, Load { destination: Relative(1), source_pointer: Relative(11) }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(43), source_pointer: Relative(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 1985 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(43) }, Load { destination: Relative(43), source_pointer: Relative(15) }, Load { destination: Relative(48), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(43) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(51), source: Relative(51), bit_size: U1 }, JumpIf { condition: Relative(51), location: 1995 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Load { destination: Relative(51), source_pointer: Relative(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 2006 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(51) }, Load { destination: Relative(51), source_pointer: Relative(43) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(51) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 2014 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(51) }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(48) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(48) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(48) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(9) }, JumpIf { condition: Relative(51), location: 2032 }, Jump { location: 2060 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Load { destination: Relative(48), source_pointer: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Not { destination: Relative(51), source: Relative(51), bit_size: U1 }, JumpIf { condition: Relative(51), location: 2039 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(48) }, Mov { destination: Relative(48), source: Direct(1) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(51) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Mov { destination: Relative(52), source: Relative(51) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(9) }, Mov { destination: Relative(47), source: Relative(12) }, Jump { location: 2056 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(50), location: 16428 }, Jump { location: 2059 }, Jump { location: 2060 }, Load { destination: Relative(43), source_pointer: Relative(49) }, JumpIf { condition: Relative(43), location: 2063 }, Call { location: 18815 }, Load { destination: Relative(43), source_pointer: Relative(15) }, Load { destination: Relative(47), source_pointer: Relative(43) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(47) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 2070 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(47) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(51), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(51), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Mov { destination: Relative(53), source: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(4) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, Store { destination_pointer: Relative(43), source: Relative(51) }, Store { destination_pointer: Relative(47), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2097 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 16398 }, Jump { location: 2100 }, Load { destination: Relative(2), source_pointer: Relative(43) }, Load { destination: Relative(48), source_pointer: Relative(47) }, Load { destination: Relative(51), source_pointer: Relative(49) }, Load { destination: Relative(52), source_pointer: Relative(48) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 2109 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(52) }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(43), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(52) }, Store { destination_pointer: Relative(49), source: Relative(51) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(43) }, Cast { destination: Relative(47), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(43), source: Relative(47), bit_size: Field }, Cast { destination: Relative(2), source: Relative(43), bit_size: Integer(U32) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2133 }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(47), location: 16296 }, Jump { location: 2136 }, Load { destination: Relative(1), source_pointer: Relative(11) }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(4), source_pointer: Relative(15) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(43), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(43), source: Relative(43), bit_size: U1 }, JumpIf { condition: Relative(43), location: 2149 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(14) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2157 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(10) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, JumpIf { condition: Relative(14), location: 2175 }, Jump { location: 2198 }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(43), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(43), source: Relative(43), bit_size: U1 }, JumpIf { condition: Relative(43), location: 2182 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(14) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2190 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Mov { destination: Relative(10), source: Relative(12) }, Jump { location: 2194 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(16) }, JumpIf { condition: Relative(14), location: 16071 }, Jump { location: 2197 }, Jump { location: 2198 }, Load { destination: Relative(4), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 2202 }, Call { location: 18818 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(10) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(43), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(43), source: Relative(43), bit_size: U1 }, JumpIf { condition: Relative(43), location: 2283 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(48), bit_size: Field, value: 5 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(51), source: Relative(50) }, Store { destination_pointer: Relative(51), source: Relative(48) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(8) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(49) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Store { destination_pointer: Relative(43), source: Relative(3) }, Store { destination_pointer: Relative(47), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2311 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 16041 }, Jump { location: 2314 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(43) }, Load { destination: Relative(50), source_pointer: Relative(15) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 2323 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(52), size: Relative(53) }, output: HeapArray { pointer: Relative(54), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(14), source: Relative(50) }, Store { destination_pointer: Relative(43), source: Relative(49) }, Store { destination_pointer: Relative(47), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(14), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(14), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(14), bit_size: Field, value: 11 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2348 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(15), location: 15929 }, Jump { location: 2351 }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(4), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(15) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2359 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(4) }, JumpIf { condition: Relative(47), location: 2366 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(40) }, JumpIf { condition: Relative(4), location: 2369 }, Call { location: 18806 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2375 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(4) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(51), bit_size: Field, value: 2 }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(53) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(53) }, Store { destination_pointer: Relative(54), source: Relative(51) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(52) }, Store { destination_pointer: Relative(47), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2416 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 15899 }, Jump { location: 2419 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(47) }, Load { destination: Relative(43), source_pointer: Relative(49) }, Load { destination: Relative(52), source_pointer: Relative(15) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 2428 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(52) }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(52) }, Store { destination_pointer: Relative(49), source: Relative(43) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(15), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(15), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(15), bit_size: Field, value: 13 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2453 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(43), location: 15787 }, Jump { location: 2456 }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(4), source_pointer: Relative(11) }, Load { destination: Relative(43), source_pointer: Relative(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 2464 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(43) }, BinaryIntOp { destination: Relative(43), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(43), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(4) }, JumpIf { condition: Relative(49), location: 2471 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(43), rhs: Relative(40) }, JumpIf { condition: Relative(4), location: 2474 }, Call { location: 18806 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(4) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 2480 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(4) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(14) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(53) }, Store { destination_pointer: Relative(49), source: Relative(2) }, Store { destination_pointer: Relative(50), source: Relative(3) }, Store { destination_pointer: Relative(52), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2520 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 15757 }, Jump { location: 2523 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(43), source_pointer: Relative(49) }, Load { destination: Relative(47), source_pointer: Relative(50) }, Load { destination: Relative(53), source_pointer: Relative(43) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 2532 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(53) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(53) }, Store { destination_pointer: Relative(50), source: Relative(47) }, Store { destination_pointer: Relative(52), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(43), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(43), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2556 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(43), location: 15645 }, Jump { location: 2559 }, Const { destination: Relative(2), bit_size: Field, value: 55 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2562 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(4), location: 15578 }, Jump { location: 2565 }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(4), source_pointer: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(43), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(43), source: Relative(43), bit_size: U1 }, JumpIf { condition: Relative(43), location: 2573 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 2578 }, Call { location: 18821 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(10) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2587 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(47) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(47) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(9) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(51) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(47), source: Relative(53) }, Store { destination_pointer: Relative(49), source: Relative(10) }, Store { destination_pointer: Relative(50), source: Relative(3) }, Store { destination_pointer: Relative(52), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2627 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(10), location: 15548 }, Jump { location: 2630 }, Load { destination: Relative(10), source_pointer: Relative(47) }, Load { destination: Relative(11), source_pointer: Relative(49) }, Load { destination: Relative(43), source_pointer: Relative(50) }, Load { destination: Relative(53), source_pointer: Relative(11) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 2639 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(53) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(47), source: Relative(10) }, Store { destination_pointer: Relative(49), source: Relative(53) }, Store { destination_pointer: Relative(50), source: Relative(43) }, Store { destination_pointer: Relative(52), source: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Cast { destination: Relative(43), source: Relative(10), bit_size: Integer(U32) }, Cast { destination: Relative(11), source: Relative(43), bit_size: Field }, Cast { destination: Relative(10), source: Relative(11), bit_size: Integer(U32) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2663 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(43), location: 15488 }, Jump { location: 2666 }, Load { destination: Relative(2), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Relative(7) }, JumpIf { condition: Relative(4), location: 2670 }, Call { location: 18824 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(11) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 2751 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(11) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(9) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(53) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(53) }, Store { destination_pointer: Relative(54), source: Relative(51) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(11), source: Relative(52) }, Store { destination_pointer: Relative(47), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2791 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 15458 }, Jump { location: 2794 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(43), source_pointer: Relative(47) }, Load { destination: Relative(52), source_pointer: Relative(49) }, Load { destination: Relative(53), source_pointer: Relative(43) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 2803 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(53) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(53) }, Store { destination_pointer: Relative(49), source: Relative(52) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(11) }, Cast { destination: Relative(43), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(11), source: Relative(43), bit_size: Field }, Cast { destination: Relative(2), source: Relative(11), bit_size: Integer(U32) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Const { destination: Relative(43), bit_size: Field, value: 3 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2828 }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(47), location: 15346 }, Jump { location: 2831 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(47) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 2839 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(11) }, JumpIf { condition: Relative(50), location: 2846 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(40) }, JumpIf { condition: Relative(11), location: 2849 }, Call { location: 18806 }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(11) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 2855 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(11) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(9) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Mov { destination: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(56), source: Relative(48) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(2) }, Store { destination_pointer: Relative(52), source: Relative(3) }, Store { destination_pointer: Relative(53), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2895 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 15316 }, Jump { location: 2898 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(47), source_pointer: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(52) }, Load { destination: Relative(54), source_pointer: Relative(47) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 2907 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(54) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(56), size: Relative(57) }, output: HeapArray { pointer: Relative(58), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(50), source: Relative(54) }, Store { destination_pointer: Relative(52), source: Relative(49) }, Store { destination_pointer: Relative(53), source: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(11) }, Cast { destination: Relative(47), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(11), source: Relative(47), bit_size: Field }, Cast { destination: Relative(2), source: Relative(11), bit_size: Integer(U32) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Const { destination: Relative(47), bit_size: Field, value: 7 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2932 }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 15204 }, Jump { location: 2935 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Load { destination: Relative(49), source_pointer: Relative(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 2943 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(49), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(11) }, JumpIf { condition: Relative(52), location: 2950 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Relative(40) }, JumpIf { condition: Relative(11), location: 2953 }, Call { location: 18806 }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(11) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 2959 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(52), source: Relative(11) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(8) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(9) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(55), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Mov { destination: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(14) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(8) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(8) }, Store { destination_pointer: Relative(11), source: Relative(55) }, Store { destination_pointer: Relative(52), source: Relative(2) }, Store { destination_pointer: Relative(53), source: Relative(3) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 2999 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 15174 }, Jump { location: 3002 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(49), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(53) }, Load { destination: Relative(55), source_pointer: Relative(49) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 3011 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(55) }, Mov { destination: Relative(55), source: Direct(1) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(57) }, IndirectConst { destination_pointer: Relative(55), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(57), size: Relative(58) }, output: HeapArray { pointer: Relative(59), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(52), source: Relative(55) }, Store { destination_pointer: Relative(53), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(13) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(11) }, Cast { destination: Relative(49), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(11), source: Relative(49), bit_size: Field }, Cast { destination: Relative(2), source: Relative(11), bit_size: Integer(U32) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3035 }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 15062 }, Jump { location: 3038 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Load { destination: Relative(49), source_pointer: Relative(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 3046 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(52) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(53), source: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(53), source: Relative(8) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(12) }, Load { destination: Relative(53), source_pointer: Relative(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 3081 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(53) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3085 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(50), location: 15024 }, Jump { location: 3088 }, Load { destination: Relative(2), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(49) }, Load { destination: Relative(49), source_pointer: Relative(2) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 3096 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(49) }, Const { destination: Relative(49), bit_size: Integer(U8), value: 65 }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(49) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(35) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(32) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(28) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(17) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(21) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(32) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(33) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(25) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(26) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(46) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(22) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(35) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(17) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(21) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(18) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(18) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(34) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(32) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(28) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(22) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(34) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(26) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(25) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(30) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(17) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(24) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(18) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(33) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(42) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(17) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(29) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(21) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(46) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(35) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(18) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(45) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(30) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(28) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(21) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(31) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(32) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(21) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(23) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(24) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(36) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(37) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(18) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(42) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(27) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(19) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(17) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(29) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(38) }, Load { destination: Relative(54), source_pointer: Relative(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 3268 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(11) }, JumpIf { condition: Relative(54), location: 3294 }, Const { destination: Relative(56), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, Mov { destination: Relative(58), source: Relative(57) }, IndirectConst { destination_pointer: Relative(58), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(59) }, Mov { destination: Direct(32772), source: Relative(58) }, Mov { destination: Direct(32773), source: Relative(60) }, Call { location: 23 }, Const { destination: Relative(59), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(59) }, Store { destination_pointer: Relative(58), source: Relative(5) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(11) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(50) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(57), size: Relative(56) } }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(56), source: Relative(54) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(50) }, JumpIf { condition: Relative(56), location: 3314 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3316 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(50), location: 14992 }, Jump { location: 3319 }, Load { destination: Relative(2), source_pointer: Relative(54) }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(11) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 3326 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Load { destination: Relative(52), source_pointer: Relative(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 3337 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(52) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(56), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(56) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(52) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(52) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(55) }, Mov { destination: Relative(55), source: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(12) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(5) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(3) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3363 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(2), location: 3366 }, Jump { location: 3560 }, Load { destination: Relative(2), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(50) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 3374 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(50), location: 3559 }, Jump { location: 3379 }, Load { destination: Relative(2), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(50) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 3387 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Sub, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(57), source: Direct(32773) }, Mov { destination: Relative(60), source: Direct(32774) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Load { destination: Relative(59), source_pointer: Relative(60) }, Load { destination: Relative(2), source_pointer: Relative(57) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(60), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(2) }, Not { destination: Relative(60), source: Relative(60), bit_size: U1 }, JumpIf { condition: Relative(60), location: 3404 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(2) }, Store { destination_pointer: Relative(52), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(57) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(58), rhs: Relative(2) }, JumpIf { condition: Relative(54), location: 3412 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(59), rhs: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(54), location: 3557 }, Jump { location: 3416 }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(58) }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(59), rhs: Direct(32837) }, Mov { destination: Relative(50), source: Relative(58) }, Jump { location: 3422 }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Relative(59) }, JumpIf { condition: Relative(57), location: 3507 }, Jump { location: 3425 }, Load { destination: Relative(50), source_pointer: Relative(11) }, Load { destination: Relative(57), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(57), rhs: Direct(32837) }, JumpIf { condition: Relative(54), location: 3430 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(57) }, Load { destination: Relative(54), source_pointer: Relative(61) }, JumpIf { condition: Relative(56), location: 3435 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(59) }, Load { destination: Relative(56), source_pointer: Relative(61) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(60), source: Direct(32773) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(57) }, Store { destination_pointer: Relative(62), source: Relative(56) }, Mov { destination: Direct(32771), source: Relative(60) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(59) }, Store { destination_pointer: Relative(61), source: Relative(54) }, Store { destination_pointer: Relative(11), source: Relative(50) }, Load { destination: Relative(50), source_pointer: Relative(52) }, Load { destination: Relative(54), source_pointer: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(54) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(61), op: Equals, bit_size: U32, lhs: Relative(60), rhs: Relative(56) }, Not { destination: Relative(61), source: Relative(61), bit_size: U1 }, JumpIf { condition: Relative(61), location: 3461 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(61), op: LessThanEquals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, JumpIf { condition: Relative(61), location: 3467 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(62), source: Direct(32773) }, Mov { destination: Relative(63), source: Direct(32774) }, Store { destination_pointer: Relative(63), source: Relative(56) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(63), rhs: Direct(2) }, Store { destination_pointer: Relative(63), source: Relative(59) }, Store { destination_pointer: Relative(52), source: Relative(61) }, Store { destination_pointer: Relative(55), source: Relative(62) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(57) }, JumpIf { condition: Relative(50), location: 3481 }, Jump { location: 3505 }, Load { destination: Relative(50), source_pointer: Relative(62) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 3487 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(62), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Sub, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(57) }, JumpIf { condition: Relative(56), location: 3493 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(61), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(62) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(57), source: Direct(32773) }, Mov { destination: Relative(59), source: Direct(32774) }, Store { destination_pointer: Relative(59), source: Relative(58) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(50) }, Store { destination_pointer: Relative(52), source: Relative(56) }, Store { destination_pointer: Relative(55), source: Relative(57) }, Jump { location: 3505 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 3363 }, Load { destination: Relative(57), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(60), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, JumpIf { condition: Relative(60), location: 3511 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(50) }, Load { destination: Relative(60), source_pointer: Relative(62) }, JumpIf { condition: Relative(56), location: 3516 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(59) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryFieldOp { destination: Relative(57), op: LessThan, lhs: Relative(60), rhs: Relative(61) }, JumpIf { condition: Relative(57), location: 3522 }, Jump { location: 3554 }, Load { destination: Relative(57), source_pointer: Relative(11) }, Load { destination: Relative(60), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(61), op: LessThan, bit_size: U32, lhs: Relative(60), rhs: Direct(32837) }, JumpIf { condition: Relative(61), location: 3527 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(60) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(50) }, Load { destination: Relative(62), source_pointer: Relative(64) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(63), source: Direct(32773) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(60) }, Store { destination_pointer: Relative(65), source: Relative(62) }, Mov { destination: Direct(32771), source: Relative(63) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(50) }, Store { destination_pointer: Relative(64), source: Relative(61) }, Store { destination_pointer: Relative(11), source: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(3) }, BinaryIntOp { destination: Relative(61), op: LessThanEquals, bit_size: U32, lhs: Relative(60), rhs: Relative(57) }, JumpIf { condition: Relative(61), location: 3552 }, Call { location: 18867 }, Store { destination_pointer: Relative(54), source: Relative(57) }, Jump { location: 3554 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Relative(50), source: Relative(57) }, Jump { location: 3422 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 3363 }, Jump { location: 3560 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(10) }, Load { destination: Relative(52), source_pointer: Relative(11) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 3569 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(52) }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Mov { destination: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(52) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(12) }, Load { destination: Relative(56), source_pointer: Relative(11) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 3604 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(56) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3608 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(54), location: 14954 }, Jump { location: 3611 }, Load { destination: Relative(11), source_pointer: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(52) }, Load { destination: Relative(52), source_pointer: Relative(11) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(52) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 3619 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(52) }, Mov { destination: Relative(52), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(52), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Mov { destination: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(49) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(33) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(25) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(26) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(46) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(22) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(34) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(22) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(34) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(26) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(25) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(30) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(24) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(33) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(42) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(29) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(46) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(45) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(30) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(31) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(24) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(25) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(26) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(42) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(29) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(38) }, Load { destination: Relative(56), source_pointer: Relative(11) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 3794 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, JumpIf { condition: Relative(56), location: 3820 }, Const { destination: Relative(58), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(59), source: Direct(1) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(60) }, Mov { destination: Relative(60), source: Relative(59) }, IndirectConst { destination_pointer: Relative(60), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(62), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(61) }, Mov { destination: Direct(32772), source: Relative(60) }, Mov { destination: Direct(32773), source: Relative(62) }, Call { location: 23 }, Const { destination: Relative(61), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(61) }, Store { destination_pointer: Relative(60), source: Relative(5) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Store { destination_pointer: Relative(60), source: Relative(50) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Store { destination_pointer: Relative(60), source: Relative(54) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(59), size: Relative(58) } }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(58), source: Relative(56) }, Store { destination_pointer: Relative(58), source: Relative(8) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(8) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(8) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(12) }, BinaryIntOp { destination: Relative(58), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(54) }, JumpIf { condition: Relative(58), location: 3840 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3842 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(54), location: 14922 }, Jump { location: 3845 }, Load { destination: Relative(11), source_pointer: Relative(56) }, Load { destination: Relative(50), source_pointer: Relative(11) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 3852 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(11) }, Load { destination: Relative(55), source_pointer: Relative(11) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 3863 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(55) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(58), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(58) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(57) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(55) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(55) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(57) }, Mov { destination: Relative(57), source: Relative(55) }, Store { destination_pointer: Relative(57), source: Relative(12) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(5) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(3) }, Mov { destination: Relative(57), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(11) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 3889 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(11), location: 3892 }, Jump { location: 4086 }, Load { destination: Relative(11), source_pointer: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(57) }, Load { destination: Relative(56), source_pointer: Relative(54) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 3900 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(56) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, JumpIf { condition: Relative(54), location: 4085 }, Jump { location: 3905 }, Load { destination: Relative(11), source_pointer: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(57) }, Load { destination: Relative(56), source_pointer: Relative(54) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 3913 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Sub, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(59), source: Direct(32773) }, Mov { destination: Relative(62), source: Direct(32774) }, Load { destination: Relative(60), source_pointer: Relative(62) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, Load { destination: Relative(61), source_pointer: Relative(62) }, Load { destination: Relative(11), source_pointer: Relative(59) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(62), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(11) }, Not { destination: Relative(62), source: Relative(62), bit_size: U1 }, JumpIf { condition: Relative(62), location: 3930 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(11) }, Store { destination_pointer: Relative(55), source: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(59) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(60), rhs: Relative(11) }, JumpIf { condition: Relative(56), location: 3938 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(61), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(56), location: 4083 }, Jump { location: 3942 }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(60) }, BinaryIntOp { destination: Relative(58), op: LessThan, bit_size: U32, lhs: Relative(61), rhs: Direct(32837) }, Mov { destination: Relative(54), source: Relative(60) }, Jump { location: 3948 }, BinaryIntOp { destination: Relative(59), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Relative(61) }, JumpIf { condition: Relative(59), location: 4033 }, Jump { location: 3951 }, Load { destination: Relative(54), source_pointer: Relative(50) }, Load { destination: Relative(59), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(59), rhs: Direct(32837) }, JumpIf { condition: Relative(56), location: 3956 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(59) }, Load { destination: Relative(56), source_pointer: Relative(63) }, JumpIf { condition: Relative(58), location: 3961 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(61) }, Load { destination: Relative(58), source_pointer: Relative(63) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(62), source: Direct(32773) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(59) }, Store { destination_pointer: Relative(64), source: Relative(58) }, Mov { destination: Direct(32771), source: Relative(62) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(61) }, Store { destination_pointer: Relative(63), source: Relative(56) }, Store { destination_pointer: Relative(50), source: Relative(54) }, Load { destination: Relative(54), source_pointer: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(57) }, Load { destination: Relative(58), source_pointer: Relative(56) }, Const { destination: Relative(62), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(63), op: Equals, bit_size: U32, lhs: Relative(62), rhs: Relative(58) }, Not { destination: Relative(63), source: Relative(63), bit_size: U1 }, JumpIf { condition: Relative(63), location: 3987 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(58) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, BinaryIntOp { destination: Relative(63), op: LessThanEquals, bit_size: U32, lhs: Relative(59), rhs: Relative(58) }, JumpIf { condition: Relative(63), location: 3993 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(56) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(64), source: Direct(32773) }, Mov { destination: Relative(65), source: Direct(32774) }, Store { destination_pointer: Relative(65), source: Relative(58) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(65), rhs: Direct(2) }, Store { destination_pointer: Relative(65), source: Relative(61) }, Store { destination_pointer: Relative(55), source: Relative(63) }, Store { destination_pointer: Relative(57), source: Relative(64) }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(59) }, JumpIf { condition: Relative(54), location: 4007 }, Jump { location: 4031 }, Load { destination: Relative(54), source_pointer: Relative(64) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 4013 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(64), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Sub, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(59) }, JumpIf { condition: Relative(58), location: 4019 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(63), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(64) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(59), source: Direct(32773) }, Mov { destination: Relative(61), source: Direct(32774) }, Store { destination_pointer: Relative(61), source: Relative(60) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(61), rhs: Direct(2) }, Store { destination_pointer: Relative(61), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(58) }, Store { destination_pointer: Relative(57), source: Relative(59) }, Jump { location: 4031 }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 3889 }, Load { destination: Relative(59), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(62), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, JumpIf { condition: Relative(62), location: 4037 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(54) }, Load { destination: Relative(62), source_pointer: Relative(64) }, JumpIf { condition: Relative(58), location: 4042 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(61) }, Load { destination: Relative(63), source_pointer: Relative(65) }, BinaryFieldOp { destination: Relative(59), op: LessThan, lhs: Relative(62), rhs: Relative(63) }, JumpIf { condition: Relative(59), location: 4048 }, Jump { location: 4080 }, Load { destination: Relative(59), source_pointer: Relative(50) }, Load { destination: Relative(62), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(63), op: LessThan, bit_size: U32, lhs: Relative(62), rhs: Direct(32837) }, JumpIf { condition: Relative(63), location: 4053 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(62) }, Load { destination: Relative(63), source_pointer: Relative(65) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(65), rhs: Relative(54) }, Load { destination: Relative(64), source_pointer: Relative(66) }, Mov { destination: Direct(32771), source: Relative(59) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(65), source: Direct(32773) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(65), rhs: Direct(2) }, BinaryIntOp { destination: Relative(67), op: Add, bit_size: U32, lhs: Relative(66), rhs: Relative(62) }, Store { destination_pointer: Relative(67), source: Relative(64) }, Mov { destination: Direct(32771), source: Relative(65) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(59), source: Direct(32773) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(54) }, Store { destination_pointer: Relative(66), source: Relative(63) }, Store { destination_pointer: Relative(50), source: Relative(59) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(3) }, BinaryIntOp { destination: Relative(63), op: LessThanEquals, bit_size: U32, lhs: Relative(62), rhs: Relative(59) }, JumpIf { condition: Relative(63), location: 4078 }, Call { location: 18867 }, Store { destination_pointer: Relative(56), source: Relative(59) }, Jump { location: 4080 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Mov { destination: Relative(54), source: Relative(59) }, Jump { location: 3948 }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 3889 }, Jump { location: 4086 }, Load { destination: Relative(11), source_pointer: Relative(50) }, Load { destination: Relative(50), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Load { destination: Relative(55), source_pointer: Relative(50) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 4138 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(55) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4142 }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(55), location: 14871 }, Jump { location: 4145 }, Load { destination: Relative(50), source_pointer: Relative(54) }, Load { destination: Relative(54), source_pointer: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(50) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(10) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 4153 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(49) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(33) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(25) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(26) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(46) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(22) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(34) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(22) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(34) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(26) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(25) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(30) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(24) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(33) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(42) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(29) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(46) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(45) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(30) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(28) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(31) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(32) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(23) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(24) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(21) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(20) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(46) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(18) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(42) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(27) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(19) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(17) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(29) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(50) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 4330 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(4) }, JumpIf { condition: Relative(30), location: 4356 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, Mov { destination: Relative(49), source: Relative(42) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(56) }, Mov { destination: Direct(32772), source: Relative(49) }, Mov { destination: Direct(32773), source: Relative(57) }, Call { location: 23 }, Const { destination: Relative(56), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(56) }, Store { destination_pointer: Relative(49), source: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(4) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(42), size: Relative(38) } }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(54) }, JumpIf { condition: Relative(38), location: 4382 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4384 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(35), location: 14825 }, Jump { location: 4387 }, Load { destination: Relative(4), source_pointer: Relative(30) }, Load { destination: Relative(30), source_pointer: Relative(4) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 4394 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(4) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 4405 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(38) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(50) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(38) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(49) }, Mov { destination: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(49), source: Relative(12) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(5) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(4) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4431 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 4434 }, Jump { location: 4676 }, Load { destination: Relative(4), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(49) }, Load { destination: Relative(42), source_pointer: Relative(35) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 4442 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(35), location: 4675 }, Jump { location: 4447 }, Load { destination: Relative(4), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(49) }, Load { destination: Relative(42), source_pointer: Relative(35) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 4455 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(42), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(54), source: Direct(32773) }, Mov { destination: Relative(57), source: Direct(32774) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Load { destination: Relative(56), source_pointer: Relative(57) }, Load { destination: Relative(4), source_pointer: Relative(54) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(4) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 4472 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(4) }, Store { destination_pointer: Relative(38), source: Relative(42) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(55), rhs: Relative(4) }, JumpIf { condition: Relative(42), location: 4480 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(42), location: 4673 }, Jump { location: 4484 }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(55) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(56), rhs: Relative(5) }, Mov { destination: Relative(35), source: Relative(55) }, Jump { location: 4491 }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(56) }, JumpIf { condition: Relative(57), location: 4599 }, Jump { location: 4494 }, Load { destination: Relative(35), source_pointer: Relative(30) }, Load { destination: Relative(57), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(57), rhs: Direct(32837) }, JumpIf { condition: Relative(42), location: 4499 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(57), rhs: Relative(5) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(42) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(59) }, Load { destination: Relative(60), source_pointer: Relative(62) }, JumpIf { condition: Relative(50), location: 4509 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(54) }, Load { destination: Relative(50), source_pointer: Relative(62) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(61) }, Load { destination: Relative(62), source_pointer: Relative(64) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(63), source: Direct(32773) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(42) }, Store { destination_pointer: Relative(65), source: Relative(50) }, Mov { destination: Direct(32771), source: Relative(63) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(59) }, Store { destination_pointer: Relative(50), source: Relative(62) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, Store { destination_pointer: Relative(59), source: Relative(58) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(61) }, Store { destination_pointer: Relative(54), source: Relative(60) }, Store { destination_pointer: Relative(30), source: Relative(35) }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(42), source_pointer: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(42) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 4553 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(57), rhs: Relative(50) }, JumpIf { condition: Relative(58), location: 4559 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(59), source: Direct(32773) }, Mov { destination: Relative(60), source: Direct(32774) }, Store { destination_pointer: Relative(60), source: Relative(50) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Store { destination_pointer: Relative(60), source: Relative(56) }, Store { destination_pointer: Relative(38), source: Relative(58) }, Store { destination_pointer: Relative(49), source: Relative(59) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(57) }, JumpIf { condition: Relative(35), location: 4573 }, Jump { location: 4597 }, Load { destination: Relative(35), source_pointer: Relative(59) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(35) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 4579 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(57) }, JumpIf { condition: Relative(50), location: 4585 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(59) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(54), source: Direct(32773) }, Mov { destination: Relative(56), source: Direct(32774) }, Store { destination_pointer: Relative(56), source: Relative(55) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(35) }, Store { destination_pointer: Relative(38), source: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Jump { location: 4597 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 4431 }, Load { destination: Relative(57), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(58), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Direct(32837) }, JumpIf { condition: Relative(58), location: 4603 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(58), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Relative(5) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Load { destination: Relative(59), source_pointer: Relative(61) }, JumpIf { condition: Relative(50), location: 4609 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(54) }, Load { destination: Relative(60), source_pointer: Relative(62) }, BinaryFieldOp { destination: Relative(57), op: LessThan, lhs: Relative(59), rhs: Relative(60) }, JumpIf { condition: Relative(57), location: 4615 }, Jump { location: 4670 }, Load { destination: Relative(57), source_pointer: Relative(30) }, Load { destination: Relative(59), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(60), op: LessThan, bit_size: U32, lhs: Relative(59), rhs: Direct(32837) }, JumpIf { condition: Relative(60), location: 4620 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(60), op: Mul, bit_size: U32, lhs: Relative(59), rhs: Relative(5) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(60) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(3) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(62) }, Load { destination: Relative(63), source_pointer: Relative(65) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(65), rhs: Relative(58) }, Load { destination: Relative(64), source_pointer: Relative(66) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(3) }, BinaryIntOp { destination: Relative(67), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(68), op: Add, bit_size: U32, lhs: Relative(67), rhs: Relative(65) }, Load { destination: Relative(66), source_pointer: Relative(68) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(67), source: Direct(32773) }, BinaryIntOp { destination: Relative(68), op: Add, bit_size: U32, lhs: Relative(67), rhs: Direct(2) }, BinaryIntOp { destination: Relative(69), op: Add, bit_size: U32, lhs: Relative(68), rhs: Relative(60) }, Store { destination_pointer: Relative(69), source: Relative(64) }, Mov { destination: Direct(32771), source: Relative(67) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(62) }, Store { destination_pointer: Relative(64), source: Relative(66) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(60), source: Direct(32773) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(58) }, Store { destination_pointer: Relative(64), source: Relative(61) }, Mov { destination: Direct(32771), source: Relative(60) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(65) }, Store { destination_pointer: Relative(61), source: Relative(63) }, Store { destination_pointer: Relative(30), source: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, JumpIf { condition: Relative(58), location: 4668 }, Call { location: 18867 }, Store { destination_pointer: Relative(42), source: Relative(57) }, Jump { location: 4670 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Relative(35), source: Relative(57) }, Jump { location: 4491 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 4431 }, Jump { location: 4676 }, Load { destination: Relative(4), source_pointer: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(35) }, Store { destination_pointer: Relative(38), source: Relative(51) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(48) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(14) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(2) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 4697 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(38) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4701 }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(38), location: 14812 }, Jump { location: 4704 }, Load { destination: Relative(2), source_pointer: Relative(35) }, JumpIf { condition: Relative(2), location: 4707 }, Call { location: 18954 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(43) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(47) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(15) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Load { destination: Relative(35), source_pointer: Relative(11) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 4727 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(35) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4731 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(35), location: 14799 }, Jump { location: 4734 }, Load { destination: Relative(2), source_pointer: Relative(30) }, JumpIf { condition: Relative(2), location: 4737 }, Call { location: 18957 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(11) }, Store { destination_pointer: Relative(30), source: Relative(51) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(43) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(48) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(47) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(14) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(30), source_pointer: Relative(4) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 4763 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(30) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4767 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(30), location: 14776 }, Jump { location: 4770 }, Load { destination: Relative(2), source_pointer: Relative(11) }, JumpIf { condition: Relative(2), location: 4773 }, Call { location: 18960 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 4854 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(9) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(51) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(30), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(3) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4894 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 14746 }, Jump { location: 4897 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(50), source_pointer: Relative(42) }, Load { destination: Relative(54), source_pointer: Relative(35) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 4906 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(54) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(56), size: Relative(57) }, output: HeapArray { pointer: Relative(58), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(54) }, Store { destination_pointer: Relative(42), source: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(30) }, Cast { destination: Relative(35), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(35), bit_size: Field }, Cast { destination: Relative(2), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4930 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 14634 }, Jump { location: 4933 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(2) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 4941 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(30) }, JumpIf { condition: Relative(42), location: 4948 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(40) }, JumpIf { condition: Relative(30), location: 4951 }, Call { location: 18806 }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 4957 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(30) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(9) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Mov { destination: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(56), source: Relative(48) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, Store { destination_pointer: Relative(30), source: Relative(54) }, Store { destination_pointer: Relative(42), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 4997 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 14604 }, Jump { location: 5000 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(35) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 5009 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(54) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(56), size: Relative(57) }, output: HeapArray { pointer: Relative(58), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(54) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(30) }, Cast { destination: Relative(35), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(35), bit_size: Field }, Cast { destination: Relative(2), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5033 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 14492 }, Jump { location: 5036 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(2) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 5044 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(30) }, JumpIf { condition: Relative(42), location: 5051 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(40) }, JumpIf { condition: Relative(30), location: 5054 }, Call { location: 18806 }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 5060 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(30) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(9) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Mov { destination: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(56), source: Relative(14) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(8) }, Store { destination_pointer: Relative(30), source: Relative(54) }, Store { destination_pointer: Relative(42), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(3) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5100 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 14462 }, Jump { location: 5103 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(35) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 5112 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(54) }, Mov { destination: Relative(54), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(54), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(56), size: Relative(57) }, output: HeapArray { pointer: Relative(58), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(54) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(30) }, Cast { destination: Relative(35), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(35), bit_size: Field }, Cast { destination: Relative(2), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5136 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 14350 }, Jump { location: 5139 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(14), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 5147 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(35) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, Load { destination: Relative(38), source_pointer: Relative(2) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 5198 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(38) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5202 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(30), location: 14299 }, Jump { location: 5205 }, Load { destination: Relative(2), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 5213 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 5239 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, Mov { destination: Relative(49), source: Relative(42) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(50) }, Mov { destination: Direct(32772), source: Relative(49) }, Mov { destination: Direct(32773), source: Relative(54) }, Call { location: 23 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(30) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(42), size: Relative(38) } }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(15) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(38) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5332 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 14041 }, Jump { location: 5335 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(11) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(11), source: Relative(14) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5341 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(2), location: 13981 }, Jump { location: 5344 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(14), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 5352 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(35) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, Load { destination: Relative(38), source_pointer: Relative(2) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 5387 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(38) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5391 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(30), location: 13943 }, Jump { location: 5394 }, Load { destination: Relative(2), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 5402 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 5428 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, Mov { destination: Relative(49), source: Relative(42) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(50) }, Mov { destination: Direct(32772), source: Relative(49) }, Mov { destination: Direct(32773), source: Relative(54) }, Call { location: 23 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(30) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(42), size: Relative(38) } }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(15) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(30) }, JumpIf { condition: Relative(38), location: 5448 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5450 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(30), location: 13911 }, Jump { location: 5453 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 5460 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 5471 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(42), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(42) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(30) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, Mov { destination: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(38), source: Relative(12) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(5) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(3) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5497 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(2), location: 5500 }, Jump { location: 5694 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(15), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(15) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(35) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 5508 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(35) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 5693 }, Jump { location: 5513 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(15), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(15) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(35) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 5521 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(49), source: Direct(32773) }, Mov { destination: Relative(55), source: Direct(32774) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Load { destination: Relative(54), source_pointer: Relative(55) }, Load { destination: Relative(2), source_pointer: Relative(49) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 5538 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(2) }, Store { destination_pointer: Relative(30), source: Relative(35) }, Store { destination_pointer: Relative(38), source: Relative(49) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(35), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(2) }, JumpIf { condition: Relative(35), location: 5546 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(35), location: 5691 }, Jump { location: 5550 }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, Mov { destination: Relative(15), source: Relative(50) }, Jump { location: 5556 }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(54) }, JumpIf { condition: Relative(49), location: 5641 }, Jump { location: 5559 }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, JumpIf { condition: Relative(35), location: 5564 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(56) }, JumpIf { condition: Relative(42), location: 5569 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Load { destination: Relative(42), source_pointer: Relative(56) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(49) }, Store { destination_pointer: Relative(57), source: Relative(42) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(54) }, Store { destination_pointer: Relative(56), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(42), source_pointer: Relative(35) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(42) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 5595 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(42) }, JumpIf { condition: Relative(56), location: 5601 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(57), source: Direct(32773) }, Mov { destination: Relative(58), source: Direct(32774) }, Store { destination_pointer: Relative(58), source: Relative(42) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(54) }, Store { destination_pointer: Relative(30), source: Relative(56) }, Store { destination_pointer: Relative(38), source: Relative(57) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(49) }, JumpIf { condition: Relative(15), location: 5615 }, Jump { location: 5639 }, Load { destination: Relative(15), source_pointer: Relative(57) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 5621 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(49) }, JumpIf { condition: Relative(42), location: 5627 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(49), source: Direct(32773) }, Mov { destination: Relative(54), source: Direct(32774) }, Store { destination_pointer: Relative(54), source: Relative(50) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(15) }, Store { destination_pointer: Relative(30), source: Relative(42) }, Store { destination_pointer: Relative(38), source: Relative(49) }, Jump { location: 5639 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 5497 }, Load { destination: Relative(49), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Direct(32837) }, JumpIf { condition: Relative(55), location: 5645 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(15) }, Load { destination: Relative(55), source_pointer: Relative(57) }, JumpIf { condition: Relative(42), location: 5650 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryFieldOp { destination: Relative(49), op: LessThan, lhs: Relative(55), rhs: Relative(56) }, JumpIf { condition: Relative(49), location: 5656 }, Jump { location: 5688 }, Load { destination: Relative(49), source_pointer: Relative(14) }, Load { destination: Relative(55), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(55), rhs: Direct(32837) }, JumpIf { condition: Relative(56), location: 5661 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(15) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(55) }, Store { destination_pointer: Relative(60), source: Relative(57) }, Mov { destination: Direct(32771), source: Relative(58) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(15) }, Store { destination_pointer: Relative(59), source: Relative(56) }, Store { destination_pointer: Relative(14), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(55), rhs: Relative(49) }, JumpIf { condition: Relative(56), location: 5686 }, Call { location: 18867 }, Store { destination_pointer: Relative(35), source: Relative(49) }, Jump { location: 5688 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, Mov { destination: Relative(15), source: Relative(49) }, Jump { location: 5556 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 5497 }, Jump { location: 5694 }, Load { destination: Relative(2), source_pointer: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 5703 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 9 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(38) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(12) }, Load { destination: Relative(42), source_pointer: Relative(14) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(42) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 5738 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(42) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5742 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 13873 }, Jump { location: 5745 }, Load { destination: Relative(14), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(30) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 5753 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, JumpIf { condition: Relative(30), location: 5779 }, Const { destination: Relative(42), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, Mov { destination: Relative(50), source: Relative(49) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(54) }, Mov { destination: Direct(32772), source: Relative(50) }, Mov { destination: Direct(32773), source: Relative(55) }, Call { location: 23 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(15) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(35) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(49), size: Relative(42) } }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(42), source: Relative(30) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(8) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(12) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(35) }, JumpIf { condition: Relative(42), location: 5799 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5801 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(35), location: 13841 }, Jump { location: 5804 }, Load { destination: Relative(14), source_pointer: Relative(30) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 5811 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Load { destination: Relative(35), source_pointer: Relative(14) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 5822 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(35) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(49), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(49) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(42) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(35) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(35) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(42) }, Mov { destination: Relative(42), source: Relative(35) }, Store { destination_pointer: Relative(42), source: Relative(12) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(5) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(3) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(14) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 5848 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(14), location: 5851 }, Jump { location: 6045 }, Load { destination: Relative(14), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(30) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 5859 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(38) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, JumpIf { condition: Relative(30), location: 6044 }, Jump { location: 5864 }, Load { destination: Relative(14), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(30) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 5872 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(50), source: Direct(32773) }, Mov { destination: Relative(56), source: Direct(32774) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Load { destination: Relative(55), source_pointer: Relative(56) }, Load { destination: Relative(14), source_pointer: Relative(50) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 5889 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(14) }, Store { destination_pointer: Relative(35), source: Relative(38) }, Store { destination_pointer: Relative(42), source: Relative(50) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: LessThanEquals, bit_size: U32, lhs: Relative(54), rhs: Relative(14) }, JumpIf { condition: Relative(38), location: 5897 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(55), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(38), location: 6042 }, Jump { location: 5901 }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(54) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(55), rhs: Direct(32837) }, Mov { destination: Relative(30), source: Relative(54) }, Jump { location: 5907 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(55) }, JumpIf { condition: Relative(50), location: 5992 }, Jump { location: 5910 }, Load { destination: Relative(30), source_pointer: Relative(15) }, Load { destination: Relative(50), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, JumpIf { condition: Relative(38), location: 5915 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, Load { destination: Relative(38), source_pointer: Relative(57) }, JumpIf { condition: Relative(49), location: 5920 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Load { destination: Relative(49), source_pointer: Relative(57) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(56), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(50) }, Store { destination_pointer: Relative(58), source: Relative(49) }, Mov { destination: Direct(32771), source: Relative(56) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(55) }, Store { destination_pointer: Relative(57), source: Relative(38) }, Store { destination_pointer: Relative(15), source: Relative(30) }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(38), source_pointer: Relative(42) }, Load { destination: Relative(49), source_pointer: Relative(38) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(49) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 5946 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(57), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, JumpIf { condition: Relative(57), location: 5952 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(58), source: Direct(32773) }, Mov { destination: Relative(59), source: Direct(32774) }, Store { destination_pointer: Relative(59), source: Relative(49) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(55) }, Store { destination_pointer: Relative(35), source: Relative(57) }, Store { destination_pointer: Relative(42), source: Relative(58) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(50) }, JumpIf { condition: Relative(30), location: 5966 }, Jump { location: 5990 }, Load { destination: Relative(30), source_pointer: Relative(58) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 5972 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(50) }, JumpIf { condition: Relative(49), location: 5978 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(58) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(50), source: Direct(32773) }, Mov { destination: Relative(55), source: Direct(32774) }, Store { destination_pointer: Relative(55), source: Relative(54) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(42), source: Relative(50) }, Jump { location: 5990 }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 5848 }, Load { destination: Relative(50), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(56), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32837) }, JumpIf { condition: Relative(56), location: 5996 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(30) }, Load { destination: Relative(56), source_pointer: Relative(58) }, JumpIf { condition: Relative(49), location: 6001 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryFieldOp { destination: Relative(50), op: LessThan, lhs: Relative(56), rhs: Relative(57) }, JumpIf { condition: Relative(50), location: 6007 }, Jump { location: 6039 }, Load { destination: Relative(50), source_pointer: Relative(15) }, Load { destination: Relative(56), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Direct(32837) }, JumpIf { condition: Relative(57), location: 6012 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(30) }, Load { destination: Relative(58), source_pointer: Relative(60) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(59), source: Direct(32773) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(56) }, Store { destination_pointer: Relative(61), source: Relative(58) }, Mov { destination: Direct(32771), source: Relative(59) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(30) }, Store { destination_pointer: Relative(60), source: Relative(57) }, Store { destination_pointer: Relative(15), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, BinaryIntOp { destination: Relative(57), op: LessThanEquals, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, JumpIf { condition: Relative(57), location: 6037 }, Call { location: 18867 }, Store { destination_pointer: Relative(38), source: Relative(50) }, Jump { location: 6039 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Relative(30), source: Relative(50) }, Jump { location: 5907 }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 5848 }, Jump { location: 6045 }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 6052 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Const { destination: Relative(15), bit_size: Field, value: 6 }, Const { destination: Relative(35), bit_size: Field, value: 15 }, Const { destination: Relative(38), bit_size: Field, value: 33 }, Mov { destination: Relative(42), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(42), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(15) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(35) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(38) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(13) }, Load { destination: Relative(49), source_pointer: Relative(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 6077 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(49) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6081 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(30), location: 13828 }, Jump { location: 6084 }, Load { destination: Relative(30), source_pointer: Relative(38) }, Const { destination: Relative(38), bit_size: Integer(U8), value: 71 }, Const { destination: Relative(42), bit_size: Integer(U8), value: 58 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(38) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(32) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(21) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(23) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(46) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(17) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(32) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(20) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(20) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(19) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(21) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(23) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(46) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(21) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(19) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(20) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(26) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(21) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(46) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(32) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(17) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(23) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(32) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(33) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(23) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(36) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(19) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(37) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(18) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(42) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(23) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(24) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(36) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(19) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(37) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(18) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(29) }, JumpIf { condition: Relative(30), location: 6197 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(39), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, Mov { destination: Relative(50), source: Relative(39) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(54) }, Mov { destination: Direct(32772), source: Relative(50) }, Mov { destination: Direct(32773), source: Relative(55) }, Call { location: 23 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(54) }, Mov { destination: Direct(32772), source: Relative(50) }, Mov { destination: Direct(32773), source: Relative(55) }, Call { location: 23 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, Trap { revert_data: HeapVector { pointer: Relative(39), size: Relative(38) } }, Const { destination: Relative(2), bit_size: Field, value: 35 }, Const { destination: Relative(30), bit_size: Field, value: 65 }, Mov { destination: Relative(38), source: Direct(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(39) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(39) }, Store { destination_pointer: Relative(49), source: Relative(35) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(30) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 6219 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6223 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(30), location: 13815 }, Jump { location: 6226 }, Load { destination: Relative(14), source_pointer: Relative(2) }, JumpIf { condition: Relative(14), location: 6229 }, Call { location: 18957 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(14), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 6237 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(39), source: Relative(38) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(12) }, Load { destination: Relative(39), source_pointer: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 6288 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(39) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6292 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(35), location: 13764 }, Jump { location: 6295 }, Load { destination: Relative(2), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(30) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 6303 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(14) }, JumpIf { condition: Relative(30), location: 6329 }, Const { destination: Relative(39), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, Mov { destination: Relative(50), source: Relative(49) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(54) }, Mov { destination: Direct(32772), source: Relative(50) }, Mov { destination: Direct(32773), source: Relative(55) }, Call { location: 23 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(14) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(35) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(49), size: Relative(39) } }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 33 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(35), source: Direct(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(39) }, IndirectConst { destination_pointer: Relative(35), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(39) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6422 }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(38), location: 13505 }, Jump { location: 6425 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(14), source_pointer: Relative(11) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(11), source: Relative(14) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(11) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 6478 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6482 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(30), location: 13454 }, Jump { location: 6485 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6493 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, JumpIf { condition: Relative(4), location: 6519 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(35), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, Mov { destination: Relative(38), source: Relative(35) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(39) }, Mov { destination: Direct(32772), source: Relative(38) }, Mov { destination: Direct(32773), source: Relative(40) }, Call { location: 23 }, Const { destination: Relative(39), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(39) }, Store { destination_pointer: Relative(38), source: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(14) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(11) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(35), size: Relative(30) } }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(14) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(11) }, JumpIf { condition: Relative(30), location: 6545 }, Call { location: 18827 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6547 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(11), location: 13408 }, Jump { location: 6550 }, Load { destination: Relative(2), source_pointer: Relative(14) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(4) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6557 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6568 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(35) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(14) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(14) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, Mov { destination: Relative(30), source: Relative(14) }, Store { destination_pointer: Relative(30), source: Relative(12) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(3) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6594 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(2), location: 6597 }, Jump { location: 6839 }, Load { destination: Relative(2), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(30) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 6605 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 6838 }, Jump { location: 6610 }, Load { destination: Relative(2), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(30) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 6618 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18830 }, Mov { destination: Relative(38), source: Direct(32773) }, Mov { destination: Relative(49), source: Direct(32774) }, Load { destination: Relative(39), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Load { destination: Relative(40), source_pointer: Relative(49) }, Load { destination: Relative(2), source_pointer: Relative(38) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(2) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 6635 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, Store { destination_pointer: Relative(30), source: Relative(38) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(39), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 6643 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(40), rhs: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(16), location: 6836 }, Jump { location: 6647 }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(39) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(40), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(40), rhs: Relative(5) }, Mov { destination: Relative(11), source: Relative(39) }, Jump { location: 6654 }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(40) }, JumpIf { condition: Relative(49), location: 6762 }, Jump { location: 6657 }, Load { destination: Relative(11), source_pointer: Relative(4) }, Load { destination: Relative(49), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, JumpIf { condition: Relative(16), location: 6662 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(16) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, JumpIf { condition: Relative(35), location: 6672 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(16) }, Store { destination_pointer: Relative(60), source: Relative(35) }, Mov { destination: Direct(32771), source: Relative(58) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(54) }, Store { destination_pointer: Relative(35), source: Relative(57) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(38) }, Store { destination_pointer: Relative(54), source: Relative(50) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(56) }, Store { destination_pointer: Relative(38), source: Relative(55) }, Store { destination_pointer: Relative(4), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(16) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 6716 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, JumpIf { condition: Relative(50), location: 6722 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(54), source: Direct(32773) }, Mov { destination: Relative(55), source: Direct(32774) }, Store { destination_pointer: Relative(55), source: Relative(35) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(40) }, Store { destination_pointer: Relative(14), source: Relative(50) }, Store { destination_pointer: Relative(30), source: Relative(54) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(49) }, JumpIf { condition: Relative(11), location: 6736 }, Jump { location: 6760 }, Load { destination: Relative(11), source_pointer: Relative(54) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(11) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 6742 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(35), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(49) }, JumpIf { condition: Relative(35), location: 6748 }, Call { location: 18951 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 18895 }, Mov { destination: Relative(38), source: Direct(32773) }, Mov { destination: Relative(40), source: Direct(32774) }, Store { destination_pointer: Relative(40), source: Relative(39) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(40), source: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(35) }, Store { destination_pointer: Relative(30), source: Relative(38) }, Jump { location: 6760 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 6594 }, Load { destination: Relative(49), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, JumpIf { condition: Relative(50), location: 6766 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, JumpIf { condition: Relative(35), location: 6772 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(38) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(49), op: LessThan, lhs: Relative(54), rhs: Relative(55) }, JumpIf { condition: Relative(49), location: 6778 }, Jump { location: 6833 }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(54), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, JumpIf { condition: Relative(55), location: 6783 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(5) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(50) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(60) }, Load { destination: Relative(61), source_pointer: Relative(63) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(62), source: Direct(32773) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(55) }, Store { destination_pointer: Relative(64), source: Relative(59) }, Mov { destination: Direct(32771), source: Relative(62) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(57) }, Store { destination_pointer: Relative(59), source: Relative(61) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(50) }, Store { destination_pointer: Relative(59), source: Relative(56) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(60) }, Store { destination_pointer: Relative(56), source: Relative(58) }, Store { destination_pointer: Relative(4), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 6831 }, Call { location: 18867 }, Store { destination_pointer: Relative(16), source: Relative(49) }, Jump { location: 6833 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, Mov { destination: Relative(11), source: Relative(49) }, Jump { location: 6654 }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 6594 }, Jump { location: 6839 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Field, value: 12 }, Const { destination: Relative(11), bit_size: Field, value: 30 }, Const { destination: Relative(14), bit_size: Field, value: 70 }, Const { destination: Relative(16), bit_size: Field, value: 66 }, Const { destination: Relative(30), bit_size: Field, value: 130 }, Mov { destination: Relative(35), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(35), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Mov { destination: Relative(39), source: Relative(38) }, Store { destination_pointer: Relative(39), source: Relative(4) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(11) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(11) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(14) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(16) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(30) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6871 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6875 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(14), location: 13385 }, Jump { location: 6878 }, Load { destination: Relative(2), source_pointer: Relative(11) }, JumpIf { condition: Relative(2), location: 6881 }, Call { location: 18960 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 6938 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(16) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(40), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(40), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(4) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Relative(40) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6978 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 13355 }, Jump { location: 6981 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(40), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 6990 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(30), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(30), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Const { destination: Relative(30), bit_size: Field, value: 42 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7015 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(35), location: 13244 }, Jump { location: 7018 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(35), source_pointer: Relative(2) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 7026 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, JumpIf { condition: Relative(35), location: 7032 }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(39) } }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 7038 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(8) }, Load { destination: Relative(40), source_pointer: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(40) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 7052 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(40) }, Mov { destination: Relative(40), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(40), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(9) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Mov { destination: Relative(59), source: Relative(58) }, Store { destination_pointer: Relative(59), source: Relative(4) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, Store { destination_pointer: Relative(50), source: Relative(57) }, Store { destination_pointer: Relative(54), source: Relative(40) }, Store { destination_pointer: Relative(55), source: Relative(3) }, Store { destination_pointer: Relative(56), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7092 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(35), location: 13214 }, Jump { location: 7095 }, Load { destination: Relative(35), source_pointer: Relative(50) }, Load { destination: Relative(38), source_pointer: Relative(54) }, Load { destination: Relative(40), source_pointer: Relative(55) }, Load { destination: Relative(49), source_pointer: Relative(38) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(49) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 7104 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(58), size: Relative(59) }, output: HeapArray { pointer: Relative(60), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(50), source: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(40) }, Store { destination_pointer: Relative(56), source: Relative(13) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(35), source_pointer: Relative(38) }, Cast { destination: Relative(40), source: Relative(35), bit_size: Integer(U32) }, Cast { destination: Relative(38), source: Relative(40), bit_size: Field }, Cast { destination: Relative(35), source: Relative(38), bit_size: Integer(U32) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7128 }, BinaryIntOp { destination: Relative(40), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(40), location: 13150 }, Jump { location: 7131 }, Load { destination: Relative(1), source_pointer: Relative(16) }, Load { destination: Relative(2), source_pointer: Relative(39) }, JumpIf { condition: Relative(1), location: 7135 }, Jump { location: 7143 }, JumpIf { condition: Relative(1), location: 7138 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(2), rhs: Relative(30) }, JumpIf { condition: Relative(1), location: 7142 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Jump { location: 7143 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7150 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(16) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(40), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(40), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(4) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Relative(40) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7190 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 13120 }, Jump { location: 7193 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(40), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 7202 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(30), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(30), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7226 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(30), location: 13019 }, Jump { location: 7229 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 7237 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, JumpIf { condition: Relative(30), location: 7243 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(38) } }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 7249 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(16) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(9) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(40), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(4) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Store { destination_pointer: Relative(39), source: Relative(3) }, Store { destination_pointer: Relative(40), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7289 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12989 }, Jump { location: 7292 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 7301 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(49) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(40), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(30), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(30), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7325 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(30), location: 12888 }, Jump { location: 7328 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7336 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7342 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7348 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(4) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(40), bit_size: Field, value: 1 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(40) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(49) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7389 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12858 }, Jump { location: 7392 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(16) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 7401 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(16), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(16), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7425 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(16), location: 12747 }, Jump { location: 7428 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7436 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U1, lhs: Relative(16), rhs: Relative(7) }, JumpIf { condition: Relative(4), location: 7443 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7449 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(4) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(40) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(49) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7489 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12717 }, Jump { location: 7492 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(16) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 7501 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(16), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(16), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7525 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(16), location: 12616 }, Jump { location: 7528 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7536 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7542 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7548 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(4) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(54), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(40) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(49) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7588 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12586 }, Jump { location: 7591 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(16) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 7600 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(54), size: Relative(55) }, output: HeapArray { pointer: Relative(56), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Cast { destination: Relative(16), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(4), source: Relative(16), bit_size: Field }, Cast { destination: Relative(2), source: Relative(4), bit_size: Integer(U32) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7624 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(16), location: 12475 }, Jump { location: 7627 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7635 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(4) }, JumpIf { condition: Relative(35), location: 7642 }, Call { location: 18803 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, JumpIf { condition: Relative(35), location: 7646 }, Call { location: 18806 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 7652 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(16) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(9) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(43) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Store { destination_pointer: Relative(39), source: Relative(3) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7692 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12445 }, Jump { location: 7695 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(50), source_pointer: Relative(30) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 7704 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(50) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(30), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(30), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Const { destination: Relative(30), bit_size: Field, value: 4 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7729 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(35), location: 12334 }, Jump { location: 7732 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 7740 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, JumpIf { condition: Relative(38), location: 7747 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(4) }, JumpIf { condition: Relative(16), location: 7750 }, Call { location: 18806 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 7756 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(38), source: Relative(16) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(8) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(38), source: Relative(9) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(48) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(2) }, Store { destination_pointer: Relative(39), source: Relative(3) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7796 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12304 }, Jump { location: 7799 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(50), source_pointer: Relative(30) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 7808 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(50) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(30), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(30), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7832 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(30), location: 12193 }, Jump { location: 7835 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7843 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Direct(32837) }, JumpIf { condition: Relative(16), location: 7849 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7855 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(15) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(43) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(48) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7895 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12163 }, Jump { location: 7898 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(48), source_pointer: Relative(16) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 7907 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(48) }, Mov { destination: Relative(48), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(50), size: Relative(54) }, output: HeapArray { pointer: Relative(55), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(48) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(2), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7931 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(16), location: 12052 }, Jump { location: 7934 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7942 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Direct(32837) }, JumpIf { condition: Relative(16), location: 7948 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 7954 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(15) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(39), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(49) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Mov { destination: Relative(50), source: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(40) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(48) }, Store { destination_pointer: Relative(35), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(3) }, Store { destination_pointer: Relative(39), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 7994 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 12022 }, Jump { location: 7997 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(48), source_pointer: Relative(16) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 8006 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(48) }, Mov { destination: Relative(48), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(48), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(50), size: Relative(54) }, output: HeapArray { pointer: Relative(55), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(48) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, Load { destination: Relative(2), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(2), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8030 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(16), location: 11921 }, Jump { location: 8033 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 8041 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, JumpIf { condition: Relative(16), location: 8047 }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(35) } }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 8053 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(15) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(8) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 8108 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Load { destination: Relative(38), source_pointer: Relative(2) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 8119 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(38) }, Mov { destination: Relative(38), source: Direct(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(48) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Mov { destination: Relative(49), source: Relative(48) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(9) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(56) }, IndirectConst { destination_pointer: Relative(55), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Mov { destination: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(47) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(8) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(8) }, Store { destination_pointer: Relative(48), source: Relative(55) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(3) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8159 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(16), location: 11891 }, Jump { location: 8162 }, Load { destination: Relative(16), source_pointer: Relative(48) }, Load { destination: Relative(30), source_pointer: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(50) }, Load { destination: Relative(38), source_pointer: Relative(30) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 8171 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(38) }, Mov { destination: Relative(38), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(48), source: Relative(16) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Load { destination: Relative(16), source_pointer: Relative(30) }, Cast { destination: Relative(35), source: Relative(16), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(35), bit_size: Field }, Cast { destination: Relative(16), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8195 }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(35), location: 11832 }, Jump { location: 8198 }, Load { destination: Relative(1), source_pointer: Relative(15) }, Const { destination: Relative(2), bit_size: Integer(U8), value: 34 }, JumpIf { condition: Relative(1), location: 8315 }, Jump { location: 8202 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(41) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(32) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(23) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(25) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(26) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(27) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(28) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(19) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(23) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(33) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(32) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(20) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(23) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(36) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(19) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(37) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(23) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(1) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(15) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(35), source: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(24) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(36) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(46) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(17) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(22) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(18) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(21) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(20) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(46) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(17) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(31) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(45) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(27) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(19) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(17) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(31) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(21) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(34) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(44) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(1) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(29) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Relative(13)), HeapArray(HeapArray { pointer: Relative(1), size: 19 }), HeapArray(HeapArray { pointer: Relative(18), size: 29 }), MemoryAddress(Relative(7))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 8417 }, Load { destination: Relative(15), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(15) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 8322 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Load { destination: Relative(20), source_pointer: Relative(15) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 8333 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(8) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(8) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(8) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(9) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(34), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(38), source: Direct(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(39) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Mov { destination: Relative(41), source: Relative(39) }, Store { destination_pointer: Relative(41), source: Relative(47) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, Store { destination_pointer: Relative(41), source: Relative(8) }, Store { destination_pointer: Relative(30), source: Relative(38) }, Store { destination_pointer: Relative(31), source: Relative(20) }, Store { destination_pointer: Relative(34), source: Relative(3) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8373 }, BinaryIntOp { destination: Relative(18), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(18), location: 11802 }, Jump { location: 8376 }, Load { destination: Relative(18), source_pointer: Relative(30) }, Load { destination: Relative(20), source_pointer: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(34) }, Load { destination: Relative(38), source_pointer: Relative(20) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(41), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Not { destination: Relative(41), source: Relative(41), bit_size: U1 }, JumpIf { condition: Relative(41), location: 8385 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(38) }, Mov { destination: Relative(38), source: Direct(1) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(41) }, IndirectConst { destination_pointer: Relative(38), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Const { destination: Relative(44), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(41), size: Relative(44) }, output: HeapArray { pointer: Relative(45), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(30), source: Relative(18) }, Store { destination_pointer: Relative(31), source: Relative(38) }, Store { destination_pointer: Relative(34), source: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(13) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Cast { destination: Relative(21), source: Relative(18), bit_size: Integer(U32) }, Cast { destination: Relative(20), source: Relative(21), bit_size: Field }, Cast { destination: Relative(18), source: Relative(20), bit_size: Integer(U32) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8409 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(21), location: 11743 }, Jump { location: 8412 }, Load { destination: Relative(1), source_pointer: Relative(16) }, JumpIf { condition: Relative(1), location: 8416 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(15) } }, Jump { location: 8417 }, Load { destination: Relative(15), source_pointer: Relative(11) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(18), source_pointer: Relative(15) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8425 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 11 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(12) }, Load { destination: Relative(30), source_pointer: Relative(15) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 8464 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(30) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8468 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(20), location: 11692 }, Jump { location: 8471 }, Load { destination: Relative(20), source_pointer: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(18) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 8479 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, JumpIf { condition: Relative(18), location: 8505 }, Const { destination: Relative(31), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(34), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, Mov { destination: Relative(35), source: Relative(34) }, IndirectConst { destination_pointer: Relative(35), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(38) }, Mov { destination: Direct(32772), source: Relative(35) }, Mov { destination: Direct(32773), source: Relative(39) }, Call { location: 23 }, Const { destination: Relative(38), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(38) }, Store { destination_pointer: Relative(35), source: Relative(5) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(16) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(21) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(34), size: Relative(31) } }, Load { destination: Relative(18), source_pointer: Relative(15) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(18) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 8511 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(18) }, Const { destination: Relative(18), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(34), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(35), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(35), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Mov { destination: Relative(39), source: Relative(38) }, Store { destination_pointer: Relative(39), source: Relative(24) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(36) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(19) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(37) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(29) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(23) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(18) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(34) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(23) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(24) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(25) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(26) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(27) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(28) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(19) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(39), source: Relative(29) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(34) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(37), source: Relative(34) }, Store { destination_pointer: Relative(37), source: Relative(24) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(36) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(46) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(17) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(22) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(42) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(33) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(46) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(19) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(27) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(22) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(37), source: Relative(29) }, Load { destination: Relative(2), source_pointer: Relative(18) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(33), rhs: Relative(2) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 8595 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8599 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(2), location: 11639 }, Jump { location: 8602 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8608 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(8) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Load { destination: Relative(30), source_pointer: Relative(15) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 8637 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(30) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8641 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(20), location: 11601 }, Jump { location: 8644 }, Load { destination: Relative(20), source_pointer: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(20) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(2) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 8652 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, JumpIf { condition: Relative(2), location: 8678 }, Const { destination: Relative(31), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(33), source: Direct(1) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(34) }, Mov { destination: Relative(34), source: Relative(33) }, IndirectConst { destination_pointer: Relative(34), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Const { destination: Relative(37), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(36) }, Mov { destination: Direct(32772), source: Relative(34) }, Mov { destination: Direct(32773), source: Relative(37) }, Call { location: 23 }, Const { destination: Relative(36), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(36) }, Store { destination_pointer: Relative(34), source: Relative(5) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(16) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(21) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(33), size: Relative(31) } }, Load { destination: Relative(2), source_pointer: Relative(20) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(2) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 8684 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(33) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(34), source: Relative(33) }, Store { destination_pointer: Relative(34), source: Relative(8) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(8) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(8) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(9) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(36), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(33) }, Not { destination: Relative(36), source: Relative(36), bit_size: U1 }, JumpIf { condition: Relative(36), location: 8705 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(33) }, Load { destination: Relative(33), source_pointer: Relative(18) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(37), op: Equals, bit_size: U32, lhs: Relative(36), rhs: Relative(33) }, Not { destination: Relative(37), source: Relative(37), bit_size: U1 }, JumpIf { condition: Relative(37), location: 8713 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(33) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8717 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(30), location: 11370 }, Jump { location: 8720 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 6 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Load { destination: Relative(21), source_pointer: Relative(15) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 8747 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(21) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8751 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(21), location: 11332 }, Jump { location: 8754 }, Load { destination: Relative(15), source_pointer: Relative(20) }, Load { destination: Relative(20), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(15) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 8762 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, JumpIf { condition: Relative(2), location: 8788 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(31), source: Direct(1) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(33) }, Mov { destination: Relative(33), source: Relative(31) }, IndirectConst { destination_pointer: Relative(33), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(34) }, Mov { destination: Direct(32772), source: Relative(33) }, Mov { destination: Direct(32773), source: Relative(35) }, Call { location: 23 }, Const { destination: Relative(34), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(34) }, Store { destination_pointer: Relative(33), source: Relative(5) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(16) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(20) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(31), size: Relative(30) } }, Load { destination: Relative(2), source_pointer: Relative(15) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 8794 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Const { destination: Relative(2), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(33), source: Relative(31) }, Store { destination_pointer: Relative(33), source: Relative(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(32) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(28) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(17) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(22) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(23) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(25) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(26) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(27) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(28) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(19) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(23) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(24) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(25) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(26) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(27) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(28) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(19) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(29) }, Load { destination: Relative(2), source_pointer: Relative(18) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(2) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 8846 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8850 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(2), location: 11287 }, Jump { location: 8853 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 8861 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8875 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(19) }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 11 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(19) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(12) }, Load { destination: Relative(22), source_pointer: Relative(2) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 8914 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(22) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 8918 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(17), location: 11236 }, Jump { location: 8921 }, Load { destination: Relative(2), source_pointer: Relative(21) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8929 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 8955 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, Mov { destination: Relative(23), source: Relative(22) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(23) }, Mov { destination: Direct(32773), source: Relative(25) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, Store { destination_pointer: Relative(23), source: Relative(5) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(15) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(17) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(22), size: Relative(21) } }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(17) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9024 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(20), location: 10978 }, Jump { location: 9027 }, Load { destination: Relative(2), source_pointer: Relative(17) }, Load { destination: Relative(15), source_pointer: Relative(18) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9037 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 11 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(12) }, Load { destination: Relative(21), source_pointer: Relative(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9076 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(21) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9080 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(19), location: 10927 }, Jump { location: 9083 }, Load { destination: Relative(2), source_pointer: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9091 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, JumpIf { condition: Relative(17), location: 9117 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, Mov { destination: Relative(23), source: Relative(22) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(23) }, Mov { destination: Direct(32773), source: Relative(25) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, Store { destination_pointer: Relative(23), source: Relative(5) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(15) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(19) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(22), size: Relative(21) } }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 21 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(15) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9186 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(19), location: 10670 }, Jump { location: 9189 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(4), source_pointer: Relative(18) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(18), source: Relative(4) }, Const { destination: Relative(2), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9196 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(4), location: 10610 }, Jump { location: 9199 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9201 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(6) }, JumpIf { condition: Relative(2), location: 10540 }, Jump { location: 9204 }, Const { destination: Relative(2), bit_size: Integer(U64), value: 0 }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Load { destination: Relative(15), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 9297 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(15) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(15) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(40) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(20) }, Store { destination_pointer: Relative(17), source: Relative(4) }, Store { destination_pointer: Relative(18), source: Relative(3) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9337 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 10510 }, Jump { location: 9340 }, Load { destination: Relative(4), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(17) }, Load { destination: Relative(20), source_pointer: Relative(18) }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9349 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(23), size: Relative(24) }, output: HeapArray { pointer: Relative(25), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(4) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Store { destination_pointer: Relative(19), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Load { destination: Relative(4), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(4), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U64), value: 2 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9374 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(17), location: 10398 }, Jump { location: 9377 }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(15), source_pointer: Relative(10) }, Load { destination: Relative(17), source_pointer: Relative(4) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 9385 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 9392 }, Call { location: 18803 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 12 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 9396 }, Call { location: 18806 }, Load { destination: Relative(17), source_pointer: Relative(4) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9402 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(17) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(20), source: Relative(8) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(8) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(8) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(9) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Relative(25), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(43) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Relative(8) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Relative(8) }, Store { destination_pointer: Relative(17), source: Relative(23) }, Store { destination_pointer: Relative(20), source: Relative(4) }, Store { destination_pointer: Relative(21), source: Relative(3) }, Store { destination_pointer: Relative(22), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9442 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 10368 }, Jump { location: 9445 }, Load { destination: Relative(4), source_pointer: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(18) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 9454 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(25), size: Relative(26) }, output: HeapArray { pointer: Relative(27), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(17), source: Relative(4) }, Store { destination_pointer: Relative(20), source: Relative(23) }, Store { destination_pointer: Relative(21), source: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(13) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(3) }, Load { destination: Relative(4), source_pointer: Relative(17) }, Cast { destination: Relative(18), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(17), source: Relative(18), bit_size: Field }, Cast { destination: Relative(4), source: Relative(17), bit_size: Integer(U32) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Const { destination: Relative(18), bit_size: Integer(U64), value: 4 }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9479 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 10256 }, Jump { location: 9482 }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(11) }, Load { destination: Relative(19), source_pointer: Relative(4) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9490 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(19), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, JumpIf { condition: Relative(21), location: 9497 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, JumpIf { condition: Relative(17), location: 9500 }, Call { location: 18806 }, Load { destination: Relative(17), source_pointer: Relative(4) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9506 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(17) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(17) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(9) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Relative(43) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(8) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(8) }, Store { destination_pointer: Relative(17), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(4) }, Store { destination_pointer: Relative(22), source: Relative(3) }, Store { destination_pointer: Relative(23), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9546 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 10226 }, Jump { location: 9549 }, Load { destination: Relative(4), source_pointer: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(19) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 9558 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(26), size: Relative(27) }, output: HeapArray { pointer: Relative(28), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(17), source: Relative(4) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Store { destination_pointer: Relative(22), source: Relative(20) }, Store { destination_pointer: Relative(23), source: Relative(13) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(3) }, Load { destination: Relative(4), source_pointer: Relative(17) }, Cast { destination: Relative(19), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(17), source: Relative(19), bit_size: Field }, Cast { destination: Relative(4), source: Relative(17), bit_size: Integer(U32) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9582 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 10114 }, Jump { location: 9585 }, Load { destination: Relative(4), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(11) }, Load { destination: Relative(18), source_pointer: Relative(4) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9593 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, JumpIf { condition: Relative(20), location: 9600 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, JumpIf { condition: Relative(17), location: 9603 }, Call { location: 18806 }, Load { destination: Relative(15), source_pointer: Relative(4) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 9609 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(15) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(15) }, Store { destination_pointer: Relative(18), source: Relative(8) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(8) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(8) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(9) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(40) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(8) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(22) }, Store { destination_pointer: Relative(18), source: Relative(4) }, Store { destination_pointer: Relative(20), source: Relative(3) }, Store { destination_pointer: Relative(21), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9649 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 10084 }, Jump { location: 9652 }, Load { destination: Relative(4), source_pointer: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(17) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 9661 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(24), size: Relative(25) }, output: HeapArray { pointer: Relative(26), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(15), source: Relative(4) }, Store { destination_pointer: Relative(18), source: Relative(22) }, Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, Load { destination: Relative(4), source_pointer: Relative(15) }, Cast { destination: Relative(17), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(17), bit_size: Field }, Cast { destination: Relative(4), source: Relative(15), bit_size: Integer(U32) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 9685 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(17), location: 9972 }, Jump { location: 9688 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, Load { destination: Relative(14), source_pointer: Relative(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 9701 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(6) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 9709 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, JumpIf { condition: Relative(14), location: 9714 }, Jump { location: 9742 }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 9721 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(9) }, Mov { destination: Relative(4), source: Relative(12) }, Jump { location: 9738 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, JumpIf { condition: Relative(9), location: 9747 }, Jump { location: 9741 }, Jump { location: 9742 }, Load { destination: Relative(1), source_pointer: Relative(11) }, JumpIf { condition: Relative(1), location: 9746 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(9), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(11) }, Not { destination: Relative(18), source: Relative(9), bit_size: U1 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(18), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 9769 }, Jump { location: 9874 }, Load { destination: Relative(14), source_pointer: Relative(6) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 9775 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(2) }, Load { destination: Relative(19), source_pointer: Relative(6) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9789 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(19) }, Load { destination: Relative(19), source_pointer: Relative(10) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 9797 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(19) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(8) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(8) }, Store { destination_pointer: Relative(19), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(10) }, Store { destination_pointer: Relative(23), source: Relative(3) }, Store { destination_pointer: Relative(24), source: Relative(7) }, Mov { destination: Relative(9), source: Relative(12) }, Jump { location: 9824 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32837) }, JumpIf { condition: Relative(15), location: 9942 }, Jump { location: 9827 }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(20) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 9836 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(19), source: Relative(15) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(13) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(19) }, Cast { destination: Relative(20), source: Relative(15), bit_size: Integer(U32) }, Cast { destination: Relative(19), source: Relative(20), bit_size: Field }, Cast { destination: Relative(15), source: Relative(19), bit_size: Integer(U32) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Mov { destination: Relative(9), source: Relative(12) }, Jump { location: 9860 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(20), location: 9877 }, Jump { location: 9863 }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 9869 }, Jump { location: 9867 }, Store { destination_pointer: Relative(11), source: Relative(7) }, Jump { location: 9874 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U64, lhs: Relative(17), rhs: Relative(14) }, JumpIf { condition: Relative(9), location: 9874 }, Jump { location: 9872 }, Store { destination_pointer: Relative(11), source: Relative(7) }, Jump { location: 9874 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Mov { destination: Relative(4), source: Relative(9) }, Jump { location: 9738 }, Load { destination: Relative(20), source_pointer: Relative(19) }, JumpIf { condition: Relative(20), location: 9939 }, Jump { location: 9880 }, Load { destination: Relative(20), source_pointer: Relative(6) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 9886 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Relative(9) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(9) }, JumpIf { condition: Relative(22), location: 9896 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(9) }, JumpIf { condition: Relative(24), location: 9896 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 9900 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(15), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 9905 }, Call { location: 18867 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 9912 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Load { destination: Relative(20), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(22), source_pointer: Relative(27) }, Not { destination: Relative(23), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(23), rhs: Relative(20) }, JumpIf { condition: Relative(22), location: 9932 }, Jump { location: 9939 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(24), rhs: Relative(16) }, JumpIf { condition: Relative(20), location: 9935 }, Jump { location: 9939 }, Store { destination_pointer: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(18), source: Relative(25) }, Store { destination_pointer: Relative(19), source: Relative(13) }, Jump { location: 9939 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Mov { destination: Relative(9), source: Relative(20) }, Jump { location: 9860 }, Load { destination: Relative(15), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, JumpIf { condition: Relative(20), location: 9946 }, Jump { location: 9969 }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(9) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(9) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(9) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(19), source: Relative(15) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(25) }, Jump { location: 9969 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Mov { destination: Relative(9), source: Relative(15) }, Jump { location: 9824 }, Load { destination: Relative(17), source_pointer: Relative(15) }, JumpIf { condition: Relative(17), location: 10081 }, Jump { location: 9975 }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(18), source_pointer: Relative(17) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9982 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(20), location: 9992 }, BinaryIntOp { destination: Relative(23), op: Div, bit_size: U32, lhs: Relative(18), rhs: Relative(1) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 9992 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 9996 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(5) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 10001 }, Call { location: 18867 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, BinaryIntOp { destination: Relative(18), op: Sub, bit_size: U32, lhs: Relative(20), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, JumpIf { condition: Relative(20), location: 10008 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Load { destination: Relative(18), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Not { destination: Relative(23), source: Relative(18), bit_size: U1 }, BinaryIntOp { destination: Relative(18), op: Or, bit_size: U1, lhs: Relative(24), rhs: Relative(23) }, JumpIf { condition: Relative(18), location: 10032 }, Jump { location: 10027 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(22), rhs: Relative(40) }, JumpIf { condition: Relative(18), location: 10030 }, Jump { location: 10042 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Jump { location: 10042 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(14) }, Load { destination: Relative(19), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10039 }, Call { location: 18867 }, Store { destination_pointer: Relative(14), source: Relative(18) }, Store { destination_pointer: Relative(11), source: Relative(22) }, Jump { location: 10042 }, Load { destination: Relative(18), source_pointer: Relative(17) }, JumpIf { condition: Relative(18), location: 10045 }, Jump { location: 10081 }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Store { destination_pointer: Relative(23), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(40) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Store { destination_pointer: Relative(11), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 10081 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(17) }, Jump { location: 9685 }, Load { destination: Relative(4), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(17), location: 10088 }, Jump { location: 10111 }, Load { destination: Relative(4), source_pointer: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryFieldOp { destination: Relative(25), op: Add, lhs: Relative(23), rhs: Relative(24) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(23), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Store { destination_pointer: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Store { destination_pointer: Relative(18), source: Relative(23) }, Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Jump { location: 10111 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 9649 }, Load { destination: Relative(19), source_pointer: Relative(17) }, JumpIf { condition: Relative(19), location: 10223 }, Jump { location: 10117 }, Load { destination: Relative(19), source_pointer: Relative(14) }, Load { destination: Relative(20), source_pointer: Relative(19) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 10124 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 10134 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(1) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 10134 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10138 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10143 }, Call { location: 18867 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 10150 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Load { destination: Relative(20), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Not { destination: Relative(25), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Or, bit_size: U1, lhs: Relative(26), rhs: Relative(25) }, JumpIf { condition: Relative(20), location: 10174 }, Jump { location: 10169 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(24), rhs: Relative(43) }, JumpIf { condition: Relative(20), location: 10172 }, Jump { location: 10184 }, Store { destination_pointer: Relative(19), source: Relative(13) }, Jump { location: 10184 }, Store { destination_pointer: Relative(19), source: Relative(13) }, Load { destination: Relative(20), source_pointer: Relative(14) }, Load { destination: Relative(21), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(21), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10181 }, Call { location: 18867 }, Store { destination_pointer: Relative(14), source: Relative(20) }, Store { destination_pointer: Relative(11), source: Relative(24) }, Jump { location: 10184 }, Load { destination: Relative(20), source_pointer: Relative(19) }, JumpIf { condition: Relative(20), location: 10187 }, Jump { location: 10223 }, Load { destination: Relative(19), source_pointer: Relative(14) }, Load { destination: Relative(20), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Store { destination_pointer: Relative(25), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(43) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(18) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(21) }, Store { destination_pointer: Relative(11), source: Relative(20) }, Store { destination_pointer: Relative(17), source: Relative(13) }, Jump { location: 10223 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(19) }, Jump { location: 9582 }, Load { destination: Relative(4), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(19), location: 10230 }, Jump { location: 10253 }, Load { destination: Relative(4), source_pointer: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryFieldOp { destination: Relative(27), op: Add, lhs: Relative(25), rhs: Relative(26) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(25), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(17), source: Relative(4) }, Store { destination_pointer: Relative(21), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(20) }, Store { destination_pointer: Relative(23), source: Relative(24) }, Jump { location: 10253 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 9546 }, Load { destination: Relative(19), source_pointer: Relative(17) }, JumpIf { condition: Relative(19), location: 10365 }, Jump { location: 10259 }, Load { destination: Relative(19), source_pointer: Relative(6) }, Load { destination: Relative(20), source_pointer: Relative(19) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 10266 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 10276 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(1) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 10276 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10280 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10285 }, Call { location: 18867 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 10292 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Load { destination: Relative(20), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Not { destination: Relative(25), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Or, bit_size: U1, lhs: Relative(26), rhs: Relative(25) }, JumpIf { condition: Relative(20), location: 10316 }, Jump { location: 10311 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(24), rhs: Relative(43) }, JumpIf { condition: Relative(20), location: 10314 }, Jump { location: 10326 }, Store { destination_pointer: Relative(19), source: Relative(13) }, Jump { location: 10326 }, Store { destination_pointer: Relative(19), source: Relative(13) }, Load { destination: Relative(20), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(21), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10323 }, Call { location: 18867 }, Store { destination_pointer: Relative(6), source: Relative(20) }, Store { destination_pointer: Relative(10), source: Relative(24) }, Jump { location: 10326 }, Load { destination: Relative(20), source_pointer: Relative(19) }, JumpIf { condition: Relative(20), location: 10329 }, Jump { location: 10365 }, Load { destination: Relative(19), source_pointer: Relative(6) }, Load { destination: Relative(20), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Store { destination_pointer: Relative(25), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(43) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(18) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(7) }, Store { destination_pointer: Relative(6), source: Relative(21) }, Store { destination_pointer: Relative(10), source: Relative(20) }, Store { destination_pointer: Relative(17), source: Relative(13) }, Jump { location: 10365 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(19) }, Jump { location: 9479 }, Load { destination: Relative(4), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(18), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(18), location: 10372 }, Jump { location: 10395 }, Load { destination: Relative(4), source_pointer: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Add, lhs: Relative(24), rhs: Relative(25) }, Mov { destination: Direct(32771), source: Relative(18) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(17), source: Relative(4) }, Store { destination_pointer: Relative(20), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Jump { location: 10395 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 9442 }, Load { destination: Relative(17), source_pointer: Relative(15) }, JumpIf { condition: Relative(17), location: 10507 }, Jump { location: 10401 }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(18), source_pointer: Relative(17) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 10408 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(20), location: 10418 }, BinaryIntOp { destination: Relative(23), op: Div, bit_size: U32, lhs: Relative(18), rhs: Relative(1) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 10418 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 10422 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(5) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 10427 }, Call { location: 18867 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, BinaryIntOp { destination: Relative(18), op: Sub, bit_size: U32, lhs: Relative(20), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, JumpIf { condition: Relative(20), location: 10434 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Load { destination: Relative(18), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Not { destination: Relative(23), source: Relative(18), bit_size: U1 }, BinaryIntOp { destination: Relative(18), op: Or, bit_size: U1, lhs: Relative(24), rhs: Relative(23) }, JumpIf { condition: Relative(18), location: 10458 }, Jump { location: 10453 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(22), rhs: Relative(40) }, JumpIf { condition: Relative(18), location: 10456 }, Jump { location: 10468 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Jump { location: 10468 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(6) }, Load { destination: Relative(19), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 10465 }, Call { location: 18867 }, Store { destination_pointer: Relative(6), source: Relative(18) }, Store { destination_pointer: Relative(10), source: Relative(22) }, Jump { location: 10468 }, Load { destination: Relative(18), source_pointer: Relative(17) }, JumpIf { condition: Relative(18), location: 10471 }, Jump { location: 10507 }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(18), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Store { destination_pointer: Relative(23), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(40) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(7) }, Store { destination_pointer: Relative(6), source: Relative(19) }, Store { destination_pointer: Relative(10), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 10507 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(17) }, Jump { location: 9374 }, Load { destination: Relative(4), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(16), location: 10514 }, Jump { location: 10537 }, Load { destination: Relative(4), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(17) }, Load { destination: Relative(20), source_pointer: Relative(18) }, Load { destination: Relative(21), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryFieldOp { destination: Relative(24), op: Add, lhs: Relative(22), rhs: Relative(23) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(1) }, Store { destination_pointer: Relative(25), source: Relative(24) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Store { destination_pointer: Relative(19), source: Relative(21) }, Jump { location: 10537 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 9337 }, Load { destination: Relative(2), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(2), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(2), rhs: Relative(10) }, JumpIf { condition: Relative(17), location: 10561 }, Jump { location: 10607 }, BinaryFieldOp { destination: Relative(2), op: Equals, lhs: Relative(16), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(2), bit_size: U1 }, BinaryFieldOp { destination: Relative(2), op: Equals, lhs: Relative(18), rhs: Relative(8) }, Not { destination: Relative(19), source: Relative(2), bit_size: U1 }, BinaryIntOp { destination: Relative(2), op: Mul, bit_size: U1, lhs: Relative(17), rhs: Relative(19) }, JumpIf { condition: Relative(2), location: 10607 }, Jump { location: 10568 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(17), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(19), op: Sub, bit_size: U32, lhs: Relative(17), rhs: Relative(3) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(17) }, JumpIf { condition: Relative(20), location: 10574 }, Call { location: 18951 }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(4) }, Store { destination_pointer: Relative(21), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(15) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Store { destination_pointer: Relative(16), source: Relative(18) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(11), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 10607 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 9201 }, Load { destination: Relative(4), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, Not { destination: Relative(4), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(4), rhs: Relative(15) }, JumpIf { condition: Relative(20), location: 10631 }, Jump { location: 10667 }, BinaryFieldOp { destination: Relative(4), op: Mul, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(15), source_pointer: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(18) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(10) }, Store { destination_pointer: Relative(23), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, Store { destination_pointer: Relative(21), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Store { destination_pointer: Relative(19), source: Relative(7) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Jump { location: 10667 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 9196 }, Load { destination: Relative(19), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 10674 }, Jump { location: 10783 }, Load { destination: Relative(20), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Load { destination: Relative(21), source_pointer: Relative(25) }, BinaryFieldOp { destination: Relative(20), op: Mul, lhs: Relative(22), rhs: Relative(51) }, Load { destination: Relative(22), source_pointer: Relative(15) }, Load { destination: Relative(23), source_pointer: Relative(2) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 10692 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(23) }, JumpIf { condition: Relative(26), location: 10699 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(4) }, JumpIf { condition: Relative(23), location: 10702 }, Call { location: 18806 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 10708 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Load { destination: Relative(22), source_pointer: Relative(17) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 10716 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(20) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(8) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(8) }, Store { destination_pointer: Relative(22), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(17) }, Store { destination_pointer: Relative(27), source: Relative(3) }, Store { destination_pointer: Relative(28), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(12) }, Jump { location: 10743 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(19), rhs: Direct(32837) }, JumpIf { condition: Relative(23), location: 10897 }, Jump { location: 10746 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(24) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10755 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(31), size: Relative(32) }, output: HeapArray { pointer: Relative(33), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Store { destination_pointer: Relative(27), source: Relative(25) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(23) }, Cast { destination: Relative(24), source: Relative(22), bit_size: Integer(U32) }, Cast { destination: Relative(23), source: Relative(24), bit_size: Field }, Cast { destination: Relative(22), source: Relative(23), bit_size: Integer(U32) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(12) }, Jump { location: 10779 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(19), rhs: Relative(6) }, JumpIf { condition: Relative(24), location: 10786 }, Jump { location: 10782 }, Jump { location: 10783 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(19) }, Jump { location: 9186 }, Load { destination: Relative(24), source_pointer: Relative(23) }, JumpIf { condition: Relative(24), location: 10894 }, Jump { location: 10789 }, Load { destination: Relative(24), source_pointer: Relative(15) }, Load { destination: Relative(25), source_pointer: Relative(24) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 10796 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(19), rhs: Relative(19) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(19) }, JumpIf { condition: Relative(27), location: 10806 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(25), rhs: Relative(19) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(19) }, JumpIf { condition: Relative(29), location: 10806 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(25) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 10810 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(5) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 10815 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(6) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(6) }, BinaryIntOp { destination: Relative(25), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(25), rhs: Relative(6) }, JumpIf { condition: Relative(27), location: 10821 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Load { destination: Relative(25), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(3) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(7) }, Not { destination: Relative(30), source: Relative(25), bit_size: U1 }, BinaryIntOp { destination: Relative(25), op: Or, bit_size: U1, lhs: Relative(31), rhs: Relative(30) }, JumpIf { condition: Relative(25), location: 10845 }, Jump { location: 10840 }, BinaryFieldOp { destination: Relative(25), op: Equals, lhs: Relative(29), rhs: Relative(20) }, JumpIf { condition: Relative(25), location: 10843 }, Jump { location: 10855 }, Store { destination_pointer: Relative(24), source: Relative(13) }, Jump { location: 10855 }, Store { destination_pointer: Relative(24), source: Relative(13) }, Load { destination: Relative(25), source_pointer: Relative(15) }, Load { destination: Relative(26), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(26), rhs: Relative(29) }, JumpIf { condition: Relative(30), location: 10852 }, Call { location: 18867 }, Store { destination_pointer: Relative(15), source: Relative(25) }, Store { destination_pointer: Relative(2), source: Relative(29) }, Jump { location: 10855 }, Load { destination: Relative(25), source_pointer: Relative(24) }, JumpIf { condition: Relative(25), location: 10858 }, Jump { location: 10894 }, Load { destination: Relative(24), source_pointer: Relative(15) }, Load { destination: Relative(25), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(20) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Store { destination_pointer: Relative(29), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Store { destination_pointer: Relative(29), source: Relative(7) }, Store { destination_pointer: Relative(15), source: Relative(26) }, Store { destination_pointer: Relative(2), source: Relative(25) }, Store { destination_pointer: Relative(23), source: Relative(13) }, Jump { location: 10894 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, Mov { destination: Relative(19), source: Relative(24) }, Jump { location: 10779 }, Load { destination: Relative(23), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(19), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 10901 }, Jump { location: 10924 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(19) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(19) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryFieldOp { destination: Relative(32), op: Add, lhs: Relative(30), rhs: Relative(31) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(19) }, Store { destination_pointer: Relative(33), source: Relative(32) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(26), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(25) }, Store { destination_pointer: Relative(28), source: Relative(29) }, Jump { location: 10924 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, Mov { destination: Relative(19), source: Relative(23) }, Jump { location: 10743 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(5) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Load { destination: Relative(19), source_pointer: Relative(26) }, Not { destination: Relative(22), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(21) }, JumpIf { condition: Relative(19), location: 10947 }, Jump { location: 10975 }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(6) }, JumpIf { condition: Relative(22), location: 10952 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(25), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(23) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(25) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(19) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, JumpIf { condition: Relative(23), location: 10972 }, Call { location: 18867 }, Store { destination_pointer: Relative(20), source: Relative(22) }, Store { destination_pointer: Relative(17), source: Relative(19) }, Jump { location: 10975 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(19) }, Jump { location: 9080 }, Load { destination: Relative(20), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 10982 }, Jump { location: 11092 }, Load { destination: Relative(21), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryFieldOp { destination: Relative(21), op: Add, lhs: Relative(23), rhs: Relative(40) }, BinaryFieldOp { destination: Relative(23), op: Mul, lhs: Relative(22), rhs: Relative(51) }, Load { destination: Relative(22), source_pointer: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(2) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 11001 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, JumpIf { condition: Relative(27), location: 11008 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(25), rhs: Relative(4) }, JumpIf { condition: Relative(24), location: 11011 }, Call { location: 18806 }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 11017 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(19) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 11025 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(32), source: Relative(21) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(8) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(8) }, Store { destination_pointer: Relative(22), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(19) }, Store { destination_pointer: Relative(28), source: Relative(3) }, Store { destination_pointer: Relative(29), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(12) }, Jump { location: 11052 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, JumpIf { condition: Relative(24), location: 11206 }, Jump { location: 11055 }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(25) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 11064 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(32) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(32), size: Relative(33) }, output: HeapArray { pointer: Relative(34), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(27), source: Relative(30) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Store { destination_pointer: Relative(29), source: Relative(13) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(24) }, Cast { destination: Relative(25), source: Relative(22), bit_size: Integer(U32) }, Cast { destination: Relative(24), source: Relative(25), bit_size: Field }, Cast { destination: Relative(22), source: Relative(24), bit_size: Integer(U32) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(7) }, Mov { destination: Relative(20), source: Relative(12) }, Jump { location: 11088 }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(6) }, JumpIf { condition: Relative(25), location: 11095 }, Jump { location: 11091 }, Jump { location: 11092 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(20) }, Jump { location: 9024 }, Load { destination: Relative(25), source_pointer: Relative(24) }, JumpIf { condition: Relative(25), location: 11203 }, Jump { location: 11098 }, Load { destination: Relative(25), source_pointer: Relative(17) }, Load { destination: Relative(26), source_pointer: Relative(25) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 11105 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(20) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(20) }, JumpIf { condition: Relative(28), location: 11115 }, BinaryIntOp { destination: Relative(31), op: Div, bit_size: U32, lhs: Relative(26), rhs: Relative(20) }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(20) }, JumpIf { condition: Relative(30), location: 11115 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(26) }, BinaryIntOp { destination: Relative(29), op: LessThanEquals, bit_size: U32, lhs: Relative(20), rhs: Relative(28) }, JumpIf { condition: Relative(29), location: 11119 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(28), rhs: Relative(5) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(29), op: LessThanEquals, bit_size: U32, lhs: Relative(22), rhs: Relative(28) }, JumpIf { condition: Relative(29), location: 11124 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(29), op: Div, bit_size: U32, lhs: Relative(28), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(29), rhs: Relative(6) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(28), rhs: Relative(30) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Relative(6) }, JumpIf { condition: Relative(28), location: 11130 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(28), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Load { destination: Relative(26), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(3) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Relative(7) }, Not { destination: Relative(31), source: Relative(26), bit_size: U1 }, BinaryIntOp { destination: Relative(26), op: Or, bit_size: U1, lhs: Relative(32), rhs: Relative(31) }, JumpIf { condition: Relative(26), location: 11154 }, Jump { location: 11149 }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(30), rhs: Relative(21) }, JumpIf { condition: Relative(26), location: 11152 }, Jump { location: 11164 }, Store { destination_pointer: Relative(25), source: Relative(13) }, Jump { location: 11164 }, Store { destination_pointer: Relative(25), source: Relative(13) }, Load { destination: Relative(26), source_pointer: Relative(17) }, Load { destination: Relative(27), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(3) }, BinaryIntOp { destination: Relative(31), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(30) }, JumpIf { condition: Relative(31), location: 11161 }, Call { location: 18867 }, Store { destination_pointer: Relative(17), source: Relative(26) }, Store { destination_pointer: Relative(2), source: Relative(30) }, Jump { location: 11164 }, Load { destination: Relative(26), source_pointer: Relative(25) }, JumpIf { condition: Relative(26), location: 11167 }, Jump { location: 11203 }, Load { destination: Relative(25), source_pointer: Relative(17) }, Load { destination: Relative(26), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(25) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Store { destination_pointer: Relative(31), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(25), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(21) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(25) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(28), source: Direct(32773) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Store { destination_pointer: Relative(30), source: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(25) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Store { destination_pointer: Relative(17), source: Relative(27) }, Store { destination_pointer: Relative(2), source: Relative(26) }, Store { destination_pointer: Relative(24), source: Relative(13) }, Jump { location: 11203 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, Mov { destination: Relative(20), source: Relative(25) }, Jump { location: 11088 }, Load { destination: Relative(24), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 11210 }, Jump { location: 11233 }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(20) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(20) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(33), op: Add, lhs: Relative(31), rhs: Relative(32) }, Mov { destination: Direct(32771), source: Relative(25) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(20) }, Store { destination_pointer: Relative(34), source: Relative(33) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(27), source: Relative(31) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Store { destination_pointer: Relative(29), source: Relative(30) }, Jump { location: 11233 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, Mov { destination: Relative(20), source: Relative(24) }, Jump { location: 11052 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, Load { destination: Relative(20), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(3) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(5) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Load { destination: Relative(17), source_pointer: Relative(26) }, Not { destination: Relative(22), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(20) }, JumpIf { condition: Relative(17), location: 11256 }, Jump { location: 11284 }, Load { destination: Relative(17), source_pointer: Relative(21) }, Load { destination: Relative(20), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(6) }, JumpIf { condition: Relative(22), location: 11261 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(25), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(23) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(25) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(17) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, JumpIf { condition: Relative(23), location: 11281 }, Call { location: 18867 }, Store { destination_pointer: Relative(21), source: Relative(22) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Jump { location: 11284 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(17) }, Jump { location: 8918 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 11293 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(2), location: 11298 }, Jump { location: 11329 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 11304 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(1) }, Load { destination: Relative(2), source_pointer: Relative(19) }, Load { destination: Relative(17), source_pointer: Relative(30) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 11315 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(18) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 11323 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Relative(13)), HeapArray(HeapArray { pointer: Relative(17), size: 19 }), MemoryAddress(Relative(3)), MemoryAddress(Relative(2)), HeapArray(HeapArray { pointer: Relative(22), size: 16 }), MemoryAddress(Relative(13))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 11329 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 8850 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(21) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(5) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(31) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(35) }, Not { destination: Relative(31), source: Relative(21), bit_size: U1 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U1, lhs: Relative(31), rhs: Relative(30) }, JumpIf { condition: Relative(21), location: 11348 }, Jump { location: 11367 }, Load { destination: Relative(21), source_pointer: Relative(20) }, Load { destination: Relative(30), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(31), location: 11353 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 6 }, Call { location: 18873 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(30) }, Store { destination_pointer: Relative(35), source: Relative(33) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, JumpIf { condition: Relative(33), location: 11364 }, Call { location: 18867 }, Store { destination_pointer: Relative(20), source: Relative(31) }, Store { destination_pointer: Relative(2), source: Relative(21) }, Jump { location: 11367 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 8751 }, Load { destination: Relative(30), source_pointer: Relative(20) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 11376 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(30), location: 11381 }, Jump { location: 11505 }, Load { destination: Relative(31), source_pointer: Relative(20) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 11387 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(31) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(1) }, Load { destination: Relative(31), source_pointer: Relative(36) }, Load { destination: Relative(34), source_pointer: Relative(15) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(37), op: Equals, bit_size: U32, lhs: Relative(36), rhs: Relative(34) }, Not { destination: Relative(37), source: Relative(37), bit_size: U1 }, JumpIf { condition: Relative(37), location: 11398 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(34) }, Mov { destination: Relative(34), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(8) }, Load { destination: Relative(37), source_pointer: Relative(15) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(37) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 11409 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(37) }, Load { destination: Relative(37), source_pointer: Relative(2) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(41), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(37) }, Not { destination: Relative(41), source: Relative(41), bit_size: U1 }, JumpIf { condition: Relative(41), location: 11417 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(37) }, Mov { destination: Relative(37), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(41), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(44), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(45), source: Direct(1) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(46) }, IndirectConst { destination_pointer: Relative(45), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, Mov { destination: Relative(47), source: Relative(46) }, Store { destination_pointer: Relative(47), source: Relative(31) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(8) }, Store { destination_pointer: Relative(37), source: Relative(45) }, Store { destination_pointer: Relative(41), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(3) }, Store { destination_pointer: Relative(44), source: Relative(7) }, Mov { destination: Relative(30), source: Relative(12) }, Jump { location: 11444 }, BinaryIntOp { destination: Relative(33), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32837) }, JumpIf { condition: Relative(33), location: 11571 }, Jump { location: 11447 }, Load { destination: Relative(33), source_pointer: Relative(37) }, Load { destination: Relative(36), source_pointer: Relative(41) }, Load { destination: Relative(38), source_pointer: Relative(42) }, Load { destination: Relative(39), source_pointer: Relative(36) }, Const { destination: Relative(45), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(45), rhs: Relative(39) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 11456 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Relative(39) }, Mov { destination: Relative(39), source: Direct(1) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(46) }, IndirectConst { destination_pointer: Relative(39), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(46), size: Relative(47) }, output: HeapArray { pointer: Relative(48), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(37), source: Relative(33) }, Store { destination_pointer: Relative(41), source: Relative(39) }, Store { destination_pointer: Relative(42), source: Relative(38) }, Store { destination_pointer: Relative(44), source: Relative(13) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Load { destination: Relative(33), source_pointer: Relative(36) }, Cast { destination: Relative(37), source: Relative(33), bit_size: Integer(U32) }, Cast { destination: Relative(36), source: Relative(37), bit_size: Field }, Cast { destination: Relative(33), source: Relative(36), bit_size: Integer(U32) }, Mov { destination: Relative(36), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Relative(7) }, Mov { destination: Relative(30), source: Relative(12) }, Jump { location: 11480 }, BinaryIntOp { destination: Relative(37), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(37), location: 11508 }, Jump { location: 11483 }, Load { destination: Relative(30), source_pointer: Relative(34) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(36), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(33) }, Not { destination: Relative(36), source: Relative(36), bit_size: U1 }, JumpIf { condition: Relative(36), location: 11490 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(33) }, Load { destination: Relative(33), source_pointer: Relative(18) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(37), op: Equals, bit_size: U32, lhs: Relative(36), rhs: Relative(33) }, Not { destination: Relative(37), source: Relative(37), bit_size: U1 }, JumpIf { condition: Relative(37), location: 11498 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Relative(13)), HeapArray(HeapArray { pointer: Relative(33), size: 16 }), MemoryAddress(Relative(5)), MemoryAddress(Relative(31)), MemoryAddress(Relative(30)), HeapArray(HeapArray { pointer: Relative(37), size: 16 }), HeapArray(HeapArray { pointer: Relative(38), size: 16 }), MemoryAddress(Relative(13))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 11505 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 8717 }, Load { destination: Relative(37), source_pointer: Relative(36) }, JumpIf { condition: Relative(37), location: 11568 }, Jump { location: 11511 }, Load { destination: Relative(37), source_pointer: Relative(15) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(37) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 11517 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(37) }, BinaryIntOp { destination: Relative(37), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Relative(30) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(30) }, JumpIf { condition: Relative(39), location: 11527 }, BinaryIntOp { destination: Relative(44), op: Div, bit_size: U32, lhs: Relative(37), rhs: Relative(30) }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(44), rhs: Relative(30) }, JumpIf { condition: Relative(42), location: 11527 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(37) }, BinaryIntOp { destination: Relative(41), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(39) }, JumpIf { condition: Relative(41), location: 11531 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(37), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(37) }, BinaryIntOp { destination: Relative(41), op: LessThanEquals, bit_size: U32, lhs: Relative(33), rhs: Relative(39) }, JumpIf { condition: Relative(41), location: 11536 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(41), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(41), rhs: Relative(6) }, BinaryIntOp { destination: Relative(37), op: Sub, bit_size: U32, lhs: Relative(39), rhs: Relative(42) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(37), rhs: Relative(6) }, JumpIf { condition: Relative(39), location: 11542 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(37), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(39) }, Load { destination: Relative(37), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(41) }, Load { destination: Relative(42), source_pointer: Relative(45) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Relative(41) }, Load { destination: Relative(44), source_pointer: Relative(46) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Relative(41) }, Load { destination: Relative(39), source_pointer: Relative(46) }, Not { destination: Relative(41), source: Relative(39), bit_size: U1 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U1, lhs: Relative(41), rhs: Relative(37) }, JumpIf { condition: Relative(39), location: 11562 }, Jump { location: 11568 }, BinaryFieldOp { destination: Relative(37), op: Equals, lhs: Relative(42), rhs: Relative(31) }, JumpIf { condition: Relative(37), location: 11565 }, Jump { location: 11568 }, Store { destination_pointer: Relative(34), source: Relative(44) }, Store { destination_pointer: Relative(36), source: Relative(13) }, Jump { location: 11568 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Relative(30), source: Relative(37) }, Jump { location: 11480 }, Load { destination: Relative(33), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(36), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(33) }, JumpIf { condition: Relative(36), location: 11575 }, Jump { location: 11598 }, Load { destination: Relative(33), source_pointer: Relative(37) }, Load { destination: Relative(36), source_pointer: Relative(41) }, Load { destination: Relative(38), source_pointer: Relative(42) }, Load { destination: Relative(39), source_pointer: Relative(44) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(30) }, Load { destination: Relative(45), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(30) }, Load { destination: Relative(46), source_pointer: Relative(48) }, BinaryFieldOp { destination: Relative(47), op: Add, lhs: Relative(45), rhs: Relative(46) }, Mov { destination: Direct(32771), source: Relative(36) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(45), source: Direct(32773) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(30) }, Store { destination_pointer: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(37), source: Relative(33) }, Store { destination_pointer: Relative(41), source: Relative(45) }, Store { destination_pointer: Relative(42), source: Relative(38) }, Store { destination_pointer: Relative(44), source: Relative(39) }, Jump { location: 11598 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Relative(30), source: Relative(33) }, Jump { location: 11444 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(20) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(31) }, Load { destination: Relative(33), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(31) }, Load { destination: Relative(20), source_pointer: Relative(36) }, Not { destination: Relative(31), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(31), rhs: Relative(30) }, JumpIf { condition: Relative(20), location: 11617 }, Jump { location: 11636 }, Load { destination: Relative(20), source_pointer: Relative(21) }, Load { destination: Relative(30), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(31), location: 11622 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 6 }, Call { location: 18873 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(30) }, Store { destination_pointer: Relative(36), source: Relative(33) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(20) }, JumpIf { condition: Relative(33), location: 11633 }, Call { location: 18867 }, Store { destination_pointer: Relative(21), source: Relative(31) }, Store { destination_pointer: Relative(2), source: Relative(20) }, Jump { location: 11636 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(20) }, Jump { location: 8641 }, Load { destination: Relative(2), source_pointer: Relative(20) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(2) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 11645 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(2), location: 11650 }, Jump { location: 11689 }, Load { destination: Relative(30), source_pointer: Relative(20) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 11656 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(30) }, JumpIf { condition: Relative(2), location: 11660 }, Call { location: 18827 }, BinaryIntOp { destination: Relative(2), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(2) }, Load { destination: Relative(30), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(33) }, Load { destination: Relative(2), source_pointer: Relative(36) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(36), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(33) }, Not { destination: Relative(36), source: Relative(36), bit_size: U1 }, JumpIf { condition: Relative(36), location: 11674 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(33) }, Load { destination: Relative(33), source_pointer: Relative(18) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(37), op: Equals, bit_size: U32, lhs: Relative(36), rhs: Relative(33) }, Not { destination: Relative(37), source: Relative(37), bit_size: U1 }, JumpIf { condition: Relative(37), location: 11682 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Relative(13)), HeapArray(HeapArray { pointer: Relative(33), size: 16 }), MemoryAddress(Relative(5)), MemoryAddress(Relative(30)), MemoryAddress(Relative(2)), HeapArray(HeapArray { pointer: Relative(37), size: 16 }), HeapArray(HeapArray { pointer: Relative(38), size: 16 }), MemoryAddress(Relative(13))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 11689 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 8599 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(20) }, Load { destination: Relative(30), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Load { destination: Relative(34), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(31) }, Load { destination: Relative(35), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(31) }, Load { destination: Relative(20), source_pointer: Relative(39) }, Not { destination: Relative(31), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(31), rhs: Relative(30) }, JumpIf { condition: Relative(20), location: 11712 }, Jump { location: 11740 }, Load { destination: Relative(20), source_pointer: Relative(21) }, Load { destination: Relative(30), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(31), location: 11717 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(31) }, Store { destination_pointer: Relative(41), source: Relative(34) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 11 }, Call { location: 18873 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(20) }, Store { destination_pointer: Relative(39), source: Relative(35) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(20) }, JumpIf { condition: Relative(34), location: 11737 }, Call { location: 18867 }, Store { destination_pointer: Relative(21), source: Relative(31) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Jump { location: 11740 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(20) }, Jump { location: 8468 }, Load { destination: Relative(21), source_pointer: Relative(20) }, JumpIf { condition: Relative(21), location: 11799 }, Jump { location: 11746 }, Load { destination: Relative(21), source_pointer: Relative(15) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 11752 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(1) }, JumpIf { condition: Relative(31), location: 11762 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, JumpIf { condition: Relative(35), location: 11762 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(31) }, JumpIf { condition: Relative(34), location: 11766 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(31), rhs: Relative(5) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(21) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(18), rhs: Relative(31) }, JumpIf { condition: Relative(34), location: 11771 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(34), op: Div, bit_size: U32, lhs: Relative(31), rhs: Relative(6) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(34), rhs: Relative(6) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(31), rhs: Relative(35) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(6) }, JumpIf { condition: Relative(31), location: 11777 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(34) }, Load { destination: Relative(35), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(34) }, Load { destination: Relative(31), source_pointer: Relative(39) }, Not { destination: Relative(34), source: Relative(31), bit_size: U1 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U1, lhs: Relative(34), rhs: Relative(21) }, JumpIf { condition: Relative(31), location: 11793 }, Jump { location: 11799 }, BinaryFieldOp { destination: Relative(21), op: Equals, lhs: Relative(35), rhs: Relative(47) }, JumpIf { condition: Relative(21), location: 11796 }, Jump { location: 11799 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(20), source: Relative(13) }, Jump { location: 11799 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 8409 }, Load { destination: Relative(18), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(18) }, JumpIf { condition: Relative(20), location: 11806 }, Jump { location: 11829 }, Load { destination: Relative(18), source_pointer: Relative(30) }, Load { destination: Relative(20), source_pointer: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(34) }, Load { destination: Relative(38), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(1) }, Load { destination: Relative(39), source_pointer: Relative(44) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(1) }, Load { destination: Relative(41), source_pointer: Relative(45) }, BinaryFieldOp { destination: Relative(44), op: Add, lhs: Relative(39), rhs: Relative(41) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(1) }, Store { destination_pointer: Relative(45), source: Relative(44) }, Store { destination_pointer: Relative(30), source: Relative(18) }, Store { destination_pointer: Relative(31), source: Relative(39) }, Store { destination_pointer: Relative(34), source: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(38) }, Jump { location: 11829 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(18) }, Jump { location: 8373 }, Load { destination: Relative(35), source_pointer: Relative(30) }, JumpIf { condition: Relative(35), location: 11888 }, Jump { location: 11835 }, Load { destination: Relative(35), source_pointer: Relative(2) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 11841 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(1) }, JumpIf { condition: Relative(39), location: 11851 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 11851 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, BinaryIntOp { destination: Relative(48), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(39) }, JumpIf { condition: Relative(48), location: 11855 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(35), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(35) }, BinaryIntOp { destination: Relative(48), op: LessThanEquals, bit_size: U32, lhs: Relative(16), rhs: Relative(39) }, JumpIf { condition: Relative(48), location: 11860 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(48), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(48), rhs: Relative(6) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(39), rhs: Relative(49) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(6) }, JumpIf { condition: Relative(39), location: 11866 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(39) }, Load { destination: Relative(35), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Load { destination: Relative(39), source_pointer: Relative(54) }, Not { destination: Relative(48), source: Relative(39), bit_size: U1 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U1, lhs: Relative(48), rhs: Relative(35) }, JumpIf { condition: Relative(39), location: 11882 }, Jump { location: 11888 }, BinaryFieldOp { destination: Relative(35), op: Equals, lhs: Relative(49), rhs: Relative(47) }, JumpIf { condition: Relative(35), location: 11885 }, Jump { location: 11888 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Jump { location: 11888 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 8195 }, Load { destination: Relative(16), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(30), location: 11895 }, Jump { location: 11918 }, Load { destination: Relative(16), source_pointer: Relative(48) }, Load { destination: Relative(30), source_pointer: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(50) }, Load { destination: Relative(38), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(39), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(39), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(48), source: Relative(16) }, Store { destination_pointer: Relative(49), source: Relative(39) }, Store { destination_pointer: Relative(50), source: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(38) }, Jump { location: 11918 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 8159 }, Load { destination: Relative(16), source_pointer: Relative(15) }, JumpIf { condition: Relative(16), location: 12019 }, Jump { location: 11924 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(16) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 11931 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, JumpIf { condition: Relative(38), location: 11941 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, JumpIf { condition: Relative(48), location: 11941 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 11945 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 11950 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(48) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(38), location: 11956 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Load { destination: Relative(48), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Not { destination: Relative(16), source: Relative(54), bit_size: U1 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(30) }, JumpIf { condition: Relative(49), location: 11976 }, Jump { location: 12019 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(48), rhs: Relative(40) }, JumpIf { condition: Relative(16), location: 11979 }, Jump { location: 12019 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(38) }, Store { destination_pointer: Relative(55), source: Relative(30) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(39) }, Store { destination_pointer: Relative(38), source: Relative(48) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(30) }, Store { destination_pointer: Relative(48), source: Relative(50) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, Store { destination_pointer: Relative(48), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(35) }, JumpIf { condition: Relative(38), location: 12015 }, Call { location: 18951 }, Store { destination_pointer: Relative(11), source: Relative(30) }, Store { destination_pointer: Relative(14), source: Relative(16) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 12019 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 8030 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 12026 }, Jump { location: 12049 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(48), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Add, lhs: Relative(49), rhs: Relative(50) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Store { destination_pointer: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(48) }, Jump { location: 12049 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7994 }, Load { destination: Relative(16), source_pointer: Relative(15) }, JumpIf { condition: Relative(16), location: 12160 }, Jump { location: 12055 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(16) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 12062 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, JumpIf { condition: Relative(38), location: 12072 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, JumpIf { condition: Relative(48), location: 12072 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12076 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12081 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(48) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(38), location: 12087 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Load { destination: Relative(48), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Not { destination: Relative(49), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Or, bit_size: U1, lhs: Relative(50), rhs: Relative(49) }, JumpIf { condition: Relative(30), location: 12111 }, Jump { location: 12106 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(48), rhs: Relative(43) }, JumpIf { condition: Relative(30), location: 12109 }, Jump { location: 12121 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12121 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 12118 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(30) }, Store { destination_pointer: Relative(14), source: Relative(48) }, Jump { location: 12121 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 12124 }, Jump { location: 12160 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(38) }, Store { destination_pointer: Relative(49), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(39) }, Store { destination_pointer: Relative(48), source: Relative(43) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(35) }, Store { destination_pointer: Relative(48), source: Relative(47) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, Store { destination_pointer: Relative(48), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 12160 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7931 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 12167 }, Jump { location: 12190 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(48), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Add, lhs: Relative(49), rhs: Relative(50) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Store { destination_pointer: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(15), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(48) }, Jump { location: 12190 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7895 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 12301 }, Jump { location: 12196 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(30) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 12203 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, JumpIf { condition: Relative(39), location: 12213 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 12213 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(39) }, JumpIf { condition: Relative(49), location: 12217 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(35), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(35) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(39) }, JumpIf { condition: Relative(49), location: 12222 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Relative(6) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(39), rhs: Relative(50) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(6) }, JumpIf { condition: Relative(39), location: 12228 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Load { destination: Relative(35), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, Not { destination: Relative(54), source: Relative(35), bit_size: U1 }, BinaryIntOp { destination: Relative(35), op: Or, bit_size: U1, lhs: Relative(55), rhs: Relative(54) }, JumpIf { condition: Relative(35), location: 12252 }, Jump { location: 12247 }, BinaryFieldOp { destination: Relative(35), op: Equals, lhs: Relative(50), rhs: Relative(48) }, JumpIf { condition: Relative(35), location: 12250 }, Jump { location: 12262 }, Store { destination_pointer: Relative(30), source: Relative(13) }, Jump { location: 12262 }, Store { destination_pointer: Relative(30), source: Relative(13) }, Load { destination: Relative(35), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(38), rhs: Relative(50) }, JumpIf { condition: Relative(54), location: 12259 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(50) }, Jump { location: 12262 }, Load { destination: Relative(35), source_pointer: Relative(30) }, JumpIf { condition: Relative(35), location: 12265 }, Jump { location: 12301 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(39) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(48) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(15) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(39) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(30) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(14), source: Relative(35) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12301 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 7832 }, Load { destination: Relative(2), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(30), location: 12308 }, Jump { location: 12331 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(50), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(54) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Jump { location: 12331 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7796 }, Load { destination: Relative(35), source_pointer: Relative(16) }, JumpIf { condition: Relative(35), location: 12442 }, Jump { location: 12337 }, Load { destination: Relative(35), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(35) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 12344 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 12354 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, JumpIf { condition: Relative(54), location: 12354 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 12358 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 12363 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(6) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Relative(6) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(54) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, JumpIf { condition: Relative(49), location: 12369 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(38), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Not { destination: Relative(55), source: Relative(38), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Or, bit_size: U1, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(38), location: 12393 }, Jump { location: 12388 }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(54), rhs: Relative(43) }, JumpIf { condition: Relative(38), location: 12391 }, Jump { location: 12403 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Jump { location: 12403 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Load { destination: Relative(39), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(39), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 12400 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(14), source: Relative(54) }, Jump { location: 12403 }, Load { destination: Relative(38), source_pointer: Relative(35) }, JumpIf { condition: Relative(38), location: 12406 }, Jump { location: 12442 }, Load { destination: Relative(35), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(39) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(43) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(39) }, Store { destination_pointer: Relative(54), source: Relative(30) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(39) }, Store { destination_pointer: Relative(14), source: Relative(38) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12442 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 7729 }, Load { destination: Relative(2), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(30), location: 12449 }, Jump { location: 12472 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(50), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(54) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Jump { location: 12472 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7692 }, Load { destination: Relative(16), source_pointer: Relative(4) }, JumpIf { condition: Relative(16), location: 12583 }, Jump { location: 12478 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(16) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 12485 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, JumpIf { condition: Relative(38), location: 12495 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 12495 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12499 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12504 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(49) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(38), location: 12510 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(39) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Not { destination: Relative(50), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Or, bit_size: U1, lhs: Relative(54), rhs: Relative(50) }, JumpIf { condition: Relative(30), location: 12534 }, Jump { location: 12529 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(49), rhs: Relative(40) }, JumpIf { condition: Relative(30), location: 12532 }, Jump { location: 12544 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12544 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 12541 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(30) }, Store { destination_pointer: Relative(14), source: Relative(49) }, Jump { location: 12544 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 12547 }, Jump { location: 12583 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(39) }, Store { destination_pointer: Relative(49), source: Relative(40) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(51) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 12583 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7624 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 12590 }, Jump { location: 12613 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(49) }, Jump { location: 12613 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7588 }, Load { destination: Relative(16), source_pointer: Relative(4) }, JumpIf { condition: Relative(16), location: 12714 }, Jump { location: 12619 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(16) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 12626 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, JumpIf { condition: Relative(38), location: 12636 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 12636 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12640 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12645 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(49) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(38), location: 12651 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(39) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Not { destination: Relative(16), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(30) }, JumpIf { condition: Relative(50), location: 12671 }, Jump { location: 12714 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(49), rhs: Relative(40) }, JumpIf { condition: Relative(16), location: 12674 }, Jump { location: 12714 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(38) }, Store { destination_pointer: Relative(56), source: Relative(30) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(39) }, Store { destination_pointer: Relative(38), source: Relative(49) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(30) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(35) }, JumpIf { condition: Relative(38), location: 12710 }, Call { location: 18951 }, Store { destination_pointer: Relative(11), source: Relative(30) }, Store { destination_pointer: Relative(14), source: Relative(16) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 12714 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7525 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 12721 }, Jump { location: 12744 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(49) }, Jump { location: 12744 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7489 }, Load { destination: Relative(16), source_pointer: Relative(4) }, JumpIf { condition: Relative(16), location: 12855 }, Jump { location: 12750 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(16) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 12757 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, JumpIf { condition: Relative(38), location: 12767 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 12767 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12771 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12776 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(39), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(49) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(6) }, JumpIf { condition: Relative(38), location: 12782 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(39) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Not { destination: Relative(50), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Or, bit_size: U1, lhs: Relative(54), rhs: Relative(50) }, JumpIf { condition: Relative(30), location: 12806 }, Jump { location: 12801 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(49), rhs: Relative(40) }, JumpIf { condition: Relative(30), location: 12804 }, Jump { location: 12816 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12816 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 12813 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(30) }, Store { destination_pointer: Relative(14), source: Relative(49) }, Jump { location: 12816 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 12819 }, Jump { location: 12855 }, Load { destination: Relative(16), source_pointer: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(39) }, Store { destination_pointer: Relative(49), source: Relative(40) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(51) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 12855 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7425 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 12862 }, Jump { location: 12885 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(16), source_pointer: Relative(35) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(49) }, Jump { location: 12885 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7389 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 12986 }, Jump { location: 12891 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(30) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 12898 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(40), rhs: Relative(1) }, JumpIf { condition: Relative(39), location: 12908 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 12908 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, BinaryIntOp { destination: Relative(40), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(39) }, JumpIf { condition: Relative(40), location: 12912 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(35), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(35) }, BinaryIntOp { destination: Relative(40), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(39) }, JumpIf { condition: Relative(40), location: 12917 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(40), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(40), rhs: Relative(6) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(39), rhs: Relative(49) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(6) }, JumpIf { condition: Relative(39), location: 12923 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(39) }, Load { destination: Relative(35), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(40) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Not { destination: Relative(30), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(35) }, JumpIf { condition: Relative(50), location: 12943 }, Jump { location: 12986 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(49), rhs: Relative(4) }, JumpIf { condition: Relative(30), location: 12946 }, Jump { location: 12986 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(39) }, Store { destination_pointer: Relative(56), source: Relative(35) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(49) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(39) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(30) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 12982 }, Call { location: 18951 }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 12986 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 7325 }, Load { destination: Relative(2), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(30), location: 12993 }, Jump { location: 13016 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(38) }, Load { destination: Relative(35), source_pointer: Relative(39) }, Load { destination: Relative(49), source_pointer: Relative(40) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(50) }, Store { destination_pointer: Relative(39), source: Relative(35) }, Store { destination_pointer: Relative(40), source: Relative(49) }, Jump { location: 13016 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7289 }, Load { destination: Relative(30), source_pointer: Relative(16) }, JumpIf { condition: Relative(30), location: 13117 }, Jump { location: 13022 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(30) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(39), source: Relative(39), bit_size: U1 }, JumpIf { condition: Relative(39), location: 13029 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(39), op: Equals, bit_size: U32, lhs: Relative(40), rhs: Relative(1) }, JumpIf { condition: Relative(39), location: 13039 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 13039 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, BinaryIntOp { destination: Relative(40), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(39) }, JumpIf { condition: Relative(40), location: 13043 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(35), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(35) }, BinaryIntOp { destination: Relative(40), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(39) }, JumpIf { condition: Relative(40), location: 13048 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(40), op: Div, bit_size: U32, lhs: Relative(39), rhs: Relative(6) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(40), rhs: Relative(6) }, BinaryIntOp { destination: Relative(35), op: Sub, bit_size: U32, lhs: Relative(39), rhs: Relative(49) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(6) }, JumpIf { condition: Relative(39), location: 13054 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(39) }, Load { destination: Relative(35), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(40) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Not { destination: Relative(30), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(35) }, JumpIf { condition: Relative(50), location: 13074 }, Jump { location: 13117 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(49), rhs: Relative(4) }, JumpIf { condition: Relative(30), location: 13077 }, Jump { location: 13117 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(39) }, Store { destination_pointer: Relative(56), source: Relative(35) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(49) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(35) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(39) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(30) }, Store { destination_pointer: Relative(49), source: Relative(13) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 13113 }, Call { location: 18951 }, Store { destination_pointer: Relative(11), source: Relative(35) }, Store { destination_pointer: Relative(14), source: Relative(30) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 13117 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 7226 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(30), location: 13124 }, Jump { location: 13147 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(40), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(49) }, Jump { location: 13147 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7190 }, Load { destination: Relative(40), source_pointer: Relative(38) }, JumpIf { condition: Relative(40), location: 13211 }, Jump { location: 13153 }, Load { destination: Relative(40), source_pointer: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(40) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 13159 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(40) }, BinaryIntOp { destination: Relative(40), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 13169 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(40), rhs: Relative(1) }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, JumpIf { condition: Relative(55), location: 13169 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(40) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, JumpIf { condition: Relative(54), location: 13173 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(40), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(40) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(50) }, JumpIf { condition: Relative(54), location: 13178 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(6) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(6) }, BinaryIntOp { destination: Relative(40), op: Sub, bit_size: U32, lhs: Relative(50), rhs: Relative(55) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(40), rhs: Relative(6) }, JumpIf { condition: Relative(50), location: 13184 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(40), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Load { destination: Relative(40), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(50), source_pointer: Relative(58) }, Not { destination: Relative(54), source: Relative(50), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(54), rhs: Relative(40) }, JumpIf { condition: Relative(50), location: 13204 }, Jump { location: 13211 }, BinaryFieldOp { destination: Relative(40), op: Equals, lhs: Relative(55), rhs: Relative(4) }, JumpIf { condition: Relative(40), location: 13207 }, Jump { location: 13211 }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(39), source: Relative(56) }, Store { destination_pointer: Relative(38), source: Relative(13) }, Jump { location: 13211 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(40) }, Jump { location: 7128 }, Load { destination: Relative(35), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, JumpIf { condition: Relative(38), location: 13218 }, Jump { location: 13241 }, Load { destination: Relative(35), source_pointer: Relative(50) }, Load { destination: Relative(38), source_pointer: Relative(54) }, Load { destination: Relative(40), source_pointer: Relative(55) }, Load { destination: Relative(49), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(1) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(1) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryFieldOp { destination: Relative(59), op: Add, lhs: Relative(57), rhs: Relative(58) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(1) }, Store { destination_pointer: Relative(60), source: Relative(59) }, Store { destination_pointer: Relative(50), source: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(55), source: Relative(40) }, Store { destination_pointer: Relative(56), source: Relative(49) }, Jump { location: 13241 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 7092 }, Load { destination: Relative(35), source_pointer: Relative(16) }, JumpIf { condition: Relative(35), location: 13352 }, Jump { location: 13247 }, Load { destination: Relative(35), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(35) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(40), op: Equals, bit_size: U32, lhs: Relative(39), rhs: Relative(38) }, Not { destination: Relative(40), source: Relative(40), bit_size: U1 }, JumpIf { condition: Relative(40), location: 13254 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(40), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, JumpIf { condition: Relative(40), location: 13264 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 13264 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(40) }, JumpIf { condition: Relative(49), location: 13268 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(40), rhs: Relative(5) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(40) }, JumpIf { condition: Relative(49), location: 13273 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(40), rhs: Relative(6) }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Relative(6) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(40), rhs: Relative(50) }, BinaryIntOp { destination: Relative(40), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(6) }, JumpIf { condition: Relative(40), location: 13279 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(40), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(40) }, Load { destination: Relative(38), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Not { destination: Relative(54), source: Relative(38), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Or, bit_size: U1, lhs: Relative(55), rhs: Relative(54) }, JumpIf { condition: Relative(38), location: 13303 }, Jump { location: 13298 }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(50), rhs: Relative(4) }, JumpIf { condition: Relative(38), location: 13301 }, Jump { location: 13313 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Jump { location: 13313 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Load { destination: Relative(39), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(39), rhs: Relative(50) }, JumpIf { condition: Relative(54), location: 13310 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(14), source: Relative(50) }, Jump { location: 13313 }, Load { destination: Relative(38), source_pointer: Relative(35) }, JumpIf { condition: Relative(38), location: 13316 }, Jump { location: 13352 }, Load { destination: Relative(35), source_pointer: Relative(11) }, Load { destination: Relative(38), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(40) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(39) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(4) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(40), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Store { destination_pointer: Relative(50), source: Relative(30) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(40) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 21 }, Call { location: 18873 }, Mov { destination: Relative(39), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(39) }, Store { destination_pointer: Relative(14), source: Relative(38) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Jump { location: 13352 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 7015 }, Load { destination: Relative(2), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(30), location: 13359 }, Jump { location: 13382 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(40), source_pointer: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(50), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(16), source: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(50) }, Store { destination_pointer: Relative(38), source: Relative(40) }, Store { destination_pointer: Relative(39), source: Relative(49) }, Jump { location: 13382 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 6978 }, Load { destination: Relative(14), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(38) }, Load { destination: Relative(39), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(16) }, Load { destination: Relative(40), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Load { destination: Relative(16), source_pointer: Relative(50) }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(30), rhs: Relative(40) }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(39), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U1, lhs: Relative(38), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(16) }, Store { destination_pointer: Relative(11), source: Relative(30) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 6875 }, Load { destination: Relative(11), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(11) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 13414 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(11) }, Load { destination: Relative(30), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Load { destination: Relative(11), source_pointer: Relative(39) }, Load { destination: Relative(35), source_pointer: Relative(14) }, Load { destination: Relative(38), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, JumpIf { condition: Relative(39), location: 13429 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(39), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(40), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(39) }, Store { destination_pointer: Relative(50), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(40) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(30) }, Store { destination_pointer: Relative(49), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(38), rhs: Relative(11) }, JumpIf { condition: Relative(30), location: 13449 }, Call { location: 18867 }, Store { destination_pointer: Relative(14), source: Relative(35) }, Store { destination_pointer: Relative(4), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 6547 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(38) }, Load { destination: Relative(39), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Load { destination: Relative(40), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Load { destination: Relative(30), source_pointer: Relative(50) }, Not { destination: Relative(38), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(38), rhs: Relative(35) }, JumpIf { condition: Relative(30), location: 13474 }, Jump { location: 13502 }, Load { destination: Relative(30), source_pointer: Relative(11) }, Load { destination: Relative(35), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, JumpIf { condition: Relative(38), location: 13479 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(38) }, Store { destination_pointer: Relative(54), source: Relative(39) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(30) }, Store { destination_pointer: Relative(50), source: Relative(40) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(39), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, JumpIf { condition: Relative(39), location: 13499 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(4), source: Relative(30) }, Jump { location: 13502 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 6482 }, Load { destination: Relative(38), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(39), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, JumpIf { condition: Relative(39), location: 13509 }, Jump { location: 13619 }, Load { destination: Relative(39), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(39), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Load { destination: Relative(49), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(39), op: Mul, lhs: Relative(50), rhs: Relative(51) }, BinaryFieldOp { destination: Relative(50), op: Mul, lhs: Relative(49), rhs: Relative(51) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Load { destination: Relative(54), source_pointer: Relative(2) }, Load { destination: Relative(55), source_pointer: Relative(49) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 13528 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(58), op: Div, bit_size: U32, lhs: Relative(55), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(54) }, JumpIf { condition: Relative(57), location: 13535 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(55), rhs: Relative(40) }, JumpIf { condition: Relative(54), location: 13538 }, Call { location: 18806 }, Load { destination: Relative(54), source_pointer: Relative(49) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 13544 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Load { destination: Relative(49), source_pointer: Relative(35) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 13552 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(58), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(59), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(60), source: Direct(1) }, Const { destination: Relative(61), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(61) }, IndirectConst { destination_pointer: Relative(60), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Mov { destination: Relative(62), source: Relative(61) }, Store { destination_pointer: Relative(62), source: Relative(39) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, Store { destination_pointer: Relative(62), source: Relative(8) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, Store { destination_pointer: Relative(62), source: Relative(8) }, Store { destination_pointer: Relative(49), source: Relative(60) }, Store { destination_pointer: Relative(57), source: Relative(35) }, Store { destination_pointer: Relative(58), source: Relative(3) }, Store { destination_pointer: Relative(59), source: Relative(7) }, Mov { destination: Relative(38), source: Relative(12) }, Jump { location: 13579 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Direct(32837) }, JumpIf { condition: Relative(54), location: 13734 }, Jump { location: 13582 }, Load { destination: Relative(54), source_pointer: Relative(49) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Load { destination: Relative(60), source_pointer: Relative(55) }, Const { destination: Relative(61), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(62), op: Equals, bit_size: U32, lhs: Relative(61), rhs: Relative(60) }, Not { destination: Relative(62), source: Relative(62), bit_size: U1 }, JumpIf { condition: Relative(62), location: 13591 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(60) }, Mov { destination: Relative(60), source: Direct(1) }, Const { destination: Relative(62), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(62) }, IndirectConst { destination_pointer: Relative(60), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Const { destination: Relative(63), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(62), size: Relative(63) }, output: HeapArray { pointer: Relative(64), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(49), source: Relative(54) }, Store { destination_pointer: Relative(57), source: Relative(60) }, Store { destination_pointer: Relative(58), source: Relative(56) }, Store { destination_pointer: Relative(59), source: Relative(13) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(3) }, Load { destination: Relative(49), source_pointer: Relative(54) }, Cast { destination: Relative(55), source: Relative(49), bit_size: Integer(U32) }, Cast { destination: Relative(54), source: Relative(55), bit_size: Field }, Cast { destination: Relative(49), source: Relative(54), bit_size: Integer(U32) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Mov { destination: Relative(38), source: Relative(12) }, Jump { location: 13615 }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(55), location: 13622 }, Jump { location: 13618 }, Jump { location: 13619 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(38) }, Jump { location: 6422 }, Load { destination: Relative(55), source_pointer: Relative(54) }, JumpIf { condition: Relative(55), location: 13731 }, Jump { location: 13625 }, Load { destination: Relative(55), source_pointer: Relative(30) }, Load { destination: Relative(56), source_pointer: Relative(55) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 13632 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Relative(38) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(59), rhs: Relative(38) }, JumpIf { condition: Relative(58), location: 13642 }, BinaryIntOp { destination: Relative(61), op: Div, bit_size: U32, lhs: Relative(56), rhs: Relative(38) }, BinaryIntOp { destination: Relative(60), op: Equals, bit_size: U32, lhs: Relative(61), rhs: Relative(38) }, JumpIf { condition: Relative(60), location: 13642 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(56) }, BinaryIntOp { destination: Relative(59), op: LessThanEquals, bit_size: U32, lhs: Relative(38), rhs: Relative(58) }, JumpIf { condition: Relative(59), location: 13646 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(58), rhs: Relative(5) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(56) }, BinaryIntOp { destination: Relative(59), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(58) }, JumpIf { condition: Relative(59), location: 13651 }, Call { location: 18867 }, Const { destination: Relative(59), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(60), op: Div, bit_size: U32, lhs: Relative(58), rhs: Relative(59) }, BinaryIntOp { destination: Relative(61), op: Mul, bit_size: U32, lhs: Relative(60), rhs: Relative(59) }, BinaryIntOp { destination: Relative(56), op: Sub, bit_size: U32, lhs: Relative(58), rhs: Relative(61) }, BinaryIntOp { destination: Relative(58), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Relative(16) }, JumpIf { condition: Relative(58), location: 13658 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(58), op: Mul, bit_size: U32, lhs: Relative(56), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(58) }, Load { destination: Relative(56), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(3) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(59) }, Load { destination: Relative(60), source_pointer: Relative(62) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(61) }, Load { destination: Relative(62), source_pointer: Relative(64) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(7) }, Not { destination: Relative(61), source: Relative(56), bit_size: U1 }, BinaryIntOp { destination: Relative(56), op: Or, bit_size: U1, lhs: Relative(62), rhs: Relative(61) }, JumpIf { condition: Relative(56), location: 13682 }, Jump { location: 13677 }, BinaryFieldOp { destination: Relative(56), op: Equals, lhs: Relative(60), rhs: Relative(39) }, JumpIf { condition: Relative(56), location: 13680 }, Jump { location: 13692 }, Store { destination_pointer: Relative(55), source: Relative(13) }, Jump { location: 13692 }, Store { destination_pointer: Relative(55), source: Relative(13) }, Load { destination: Relative(56), source_pointer: Relative(30) }, Load { destination: Relative(57), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(61), op: LessThanEquals, bit_size: U32, lhs: Relative(57), rhs: Relative(60) }, JumpIf { condition: Relative(61), location: 13689 }, Call { location: 18867 }, Store { destination_pointer: Relative(30), source: Relative(56) }, Store { destination_pointer: Relative(2), source: Relative(60) }, Jump { location: 13692 }, Load { destination: Relative(56), source_pointer: Relative(55) }, JumpIf { condition: Relative(56), location: 13695 }, Jump { location: 13731 }, Load { destination: Relative(55), source_pointer: Relative(30) }, Load { destination: Relative(56), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Store { destination_pointer: Relative(61), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(59) }, Store { destination_pointer: Relative(60), source: Relative(39) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Store { destination_pointer: Relative(60), source: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(58) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(55) }, Store { destination_pointer: Relative(60), source: Relative(7) }, Store { destination_pointer: Relative(30), source: Relative(57) }, Store { destination_pointer: Relative(2), source: Relative(56) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Jump { location: 13731 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Mov { destination: Relative(38), source: Relative(55) }, Jump { location: 13615 }, Load { destination: Relative(54), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 13738 }, Jump { location: 13761 }, Load { destination: Relative(54), source_pointer: Relative(49) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Load { destination: Relative(60), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(38) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(38) }, Load { destination: Relative(62), source_pointer: Relative(64) }, BinaryFieldOp { destination: Relative(63), op: Add, lhs: Relative(61), rhs: Relative(62) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(61), source: Direct(32773) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(38) }, Store { destination_pointer: Relative(64), source: Relative(63) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Store { destination_pointer: Relative(57), source: Relative(61) }, Store { destination_pointer: Relative(58), source: Relative(56) }, Store { destination_pointer: Relative(59), source: Relative(60) }, Jump { location: 13761 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, Mov { destination: Relative(38), source: Relative(54) }, Jump { location: 13579 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, Load { destination: Relative(39), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(56) }, Not { destination: Relative(49), source: Relative(35), bit_size: U1 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U1, lhs: Relative(49), rhs: Relative(39) }, JumpIf { condition: Relative(35), location: 13784 }, Jump { location: 13812 }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(39), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(39), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 13789 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(39), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(49) }, Store { destination_pointer: Relative(57), source: Relative(50) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(35) }, Store { destination_pointer: Relative(56), source: Relative(54) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(39), rhs: Relative(35) }, JumpIf { condition: Relative(50), location: 13809 }, Call { location: 18867 }, Store { destination_pointer: Relative(38), source: Relative(49) }, Store { destination_pointer: Relative(30), source: Relative(35) }, Jump { location: 13812 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 6292 }, Load { destination: Relative(30), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(1) }, Load { destination: Relative(35), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, Load { destination: Relative(39), source_pointer: Relative(50) }, BinaryFieldOp { destination: Relative(49), op: Equals, lhs: Relative(35), rhs: Relative(39) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(49) }, Store { destination_pointer: Relative(2), source: Relative(35) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 6223 }, Load { destination: Relative(30), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Equals, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(54) }, Store { destination_pointer: Relative(38), source: Relative(49) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 6081 }, Load { destination: Relative(35), source_pointer: Relative(14) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 13847 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(35) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(1) }, Load { destination: Relative(35), source_pointer: Relative(49) }, Load { destination: Relative(42), source_pointer: Relative(30) }, Load { destination: Relative(49), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, JumpIf { condition: Relative(50), location: 13857 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, JumpIf { condition: Relative(42), location: 13868 }, Call { location: 18867 }, Store { destination_pointer: Relative(30), source: Relative(50) }, Store { destination_pointer: Relative(15), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 5801 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, Load { destination: Relative(42), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(55) }, Not { destination: Relative(49), source: Relative(35), bit_size: U1 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U1, lhs: Relative(49), rhs: Relative(42) }, JumpIf { condition: Relative(35), location: 13889 }, Jump { location: 13908 }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(42), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(42), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 13894 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(42) }, Store { destination_pointer: Relative(55), source: Relative(50) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(35) }, JumpIf { condition: Relative(50), location: 13905 }, Call { location: 18867 }, Store { destination_pointer: Relative(38), source: Relative(49) }, Store { destination_pointer: Relative(30), source: Relative(35) }, Jump { location: 13908 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 5742 }, Load { destination: Relative(30), source_pointer: Relative(2) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(35), rhs: Relative(30) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 13917 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(30) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(15) }, Load { destination: Relative(42), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(42), rhs: Direct(32837) }, JumpIf { condition: Relative(49), location: 13927 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Store { destination_pointer: Relative(54), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(30) }, JumpIf { condition: Relative(38), location: 13938 }, Call { location: 18867 }, Store { destination_pointer: Relative(15), source: Relative(49) }, Store { destination_pointer: Relative(14), source: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 5450 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(30) }, Load { destination: Relative(38), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Load { destination: Relative(30), source_pointer: Relative(54) }, Not { destination: Relative(42), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(42), rhs: Relative(38) }, JumpIf { condition: Relative(30), location: 13959 }, Jump { location: 13978 }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(38), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(42), location: 13964 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(38) }, Store { destination_pointer: Relative(54), source: Relative(49) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, JumpIf { condition: Relative(49), location: 13975 }, Call { location: 18867 }, Store { destination_pointer: Relative(35), source: Relative(42) }, Store { destination_pointer: Relative(15), source: Relative(30) }, Jump { location: 13978 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 5391 }, Load { destination: Relative(2), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(3) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(38) }, Load { destination: Relative(42), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(38) }, Load { destination: Relative(49), source_pointer: Relative(54) }, Not { destination: Relative(2), source: Relative(49), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U1, lhs: Relative(2), rhs: Relative(15) }, JumpIf { condition: Relative(38), location: 14002 }, Jump { location: 14038 }, BinaryFieldOp { destination: Relative(2), op: Mul, lhs: Relative(42), rhs: Relative(48) }, Load { destination: Relative(15), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(14) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(30) }, Store { destination_pointer: Relative(49), source: Relative(35) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(15) }, Store { destination_pointer: Relative(42), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(38) }, Jump { location: 14038 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 5341 }, Load { destination: Relative(35), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(38), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(35) }, JumpIf { condition: Relative(38), location: 14045 }, Jump { location: 14154 }, Load { destination: Relative(38), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Load { destination: Relative(42), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(38), op: Mul, lhs: Relative(49), rhs: Relative(43) }, Load { destination: Relative(49), source_pointer: Relative(15) }, Load { destination: Relative(50), source_pointer: Relative(2) }, Load { destination: Relative(54), source_pointer: Relative(49) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 14063 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(57), op: Div, bit_size: U32, lhs: Relative(54), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(50) }, JumpIf { condition: Relative(56), location: 14070 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Relative(40) }, JumpIf { condition: Relative(50), location: 14073 }, Call { location: 18806 }, Load { destination: Relative(50), source_pointer: Relative(49) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 14079 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(56), source: Relative(56), bit_size: U1 }, JumpIf { condition: Relative(56), location: 14087 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(58), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(59), source: Direct(1) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(60) }, IndirectConst { destination_pointer: Relative(59), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Mov { destination: Relative(61), source: Relative(60) }, Store { destination_pointer: Relative(61), source: Relative(38) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(61), rhs: Direct(2) }, Store { destination_pointer: Relative(61), source: Relative(8) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(61), rhs: Direct(2) }, Store { destination_pointer: Relative(61), source: Relative(8) }, Store { destination_pointer: Relative(49), source: Relative(59) }, Store { destination_pointer: Relative(56), source: Relative(30) }, Store { destination_pointer: Relative(57), source: Relative(3) }, Store { destination_pointer: Relative(58), source: Relative(7) }, Mov { destination: Relative(35), source: Relative(12) }, Jump { location: 14114 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Direct(32837) }, JumpIf { condition: Relative(50), location: 14269 }, Jump { location: 14117 }, Load { destination: Relative(50), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Load { destination: Relative(59), source_pointer: Relative(54) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(61), op: Equals, bit_size: U32, lhs: Relative(60), rhs: Relative(59) }, Not { destination: Relative(61), source: Relative(61), bit_size: U1 }, JumpIf { condition: Relative(61), location: 14126 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(59) }, Mov { destination: Relative(59), source: Direct(1) }, Const { destination: Relative(61), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(61) }, IndirectConst { destination_pointer: Relative(59), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Const { destination: Relative(62), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(61), size: Relative(62) }, output: HeapArray { pointer: Relative(63), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(49), source: Relative(50) }, Store { destination_pointer: Relative(56), source: Relative(59) }, Store { destination_pointer: Relative(57), source: Relative(55) }, Store { destination_pointer: Relative(58), source: Relative(13) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, Load { destination: Relative(49), source_pointer: Relative(50) }, Cast { destination: Relative(54), source: Relative(49), bit_size: Integer(U32) }, Cast { destination: Relative(50), source: Relative(54), bit_size: Field }, Cast { destination: Relative(49), source: Relative(50), bit_size: Integer(U32) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(35), source: Relative(12) }, Jump { location: 14150 }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(16) }, JumpIf { condition: Relative(54), location: 14157 }, Jump { location: 14153 }, Jump { location: 14154 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 5332 }, Load { destination: Relative(54), source_pointer: Relative(50) }, JumpIf { condition: Relative(54), location: 14266 }, Jump { location: 14160 }, Load { destination: Relative(54), source_pointer: Relative(15) }, Load { destination: Relative(55), source_pointer: Relative(54) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 14167 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(35), rhs: Relative(35) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(35) }, JumpIf { condition: Relative(57), location: 14177 }, BinaryIntOp { destination: Relative(60), op: Div, bit_size: U32, lhs: Relative(55), rhs: Relative(35) }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(60), rhs: Relative(35) }, JumpIf { condition: Relative(59), location: 14177 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(55) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(35), rhs: Relative(57) }, JumpIf { condition: Relative(58), location: 14181 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(57), rhs: Relative(5) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(55) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(57) }, JumpIf { condition: Relative(58), location: 14186 }, Call { location: 18867 }, Const { destination: Relative(58), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(59), op: Div, bit_size: U32, lhs: Relative(57), rhs: Relative(58) }, BinaryIntOp { destination: Relative(60), op: Mul, bit_size: U32, lhs: Relative(59), rhs: Relative(58) }, BinaryIntOp { destination: Relative(55), op: Sub, bit_size: U32, lhs: Relative(57), rhs: Relative(60) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(55), rhs: Relative(16) }, JumpIf { condition: Relative(57), location: 14193 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(57), op: Mul, bit_size: U32, lhs: Relative(55), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(57) }, Load { destination: Relative(55), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(60) }, Load { destination: Relative(61), source_pointer: Relative(63) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Not { destination: Relative(60), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(55), op: Or, bit_size: U1, lhs: Relative(61), rhs: Relative(60) }, JumpIf { condition: Relative(55), location: 14217 }, Jump { location: 14212 }, BinaryFieldOp { destination: Relative(55), op: Equals, lhs: Relative(59), rhs: Relative(38) }, JumpIf { condition: Relative(55), location: 14215 }, Jump { location: 14227 }, Store { destination_pointer: Relative(54), source: Relative(13) }, Jump { location: 14227 }, Store { destination_pointer: Relative(54), source: Relative(13) }, Load { destination: Relative(55), source_pointer: Relative(15) }, Load { destination: Relative(56), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, BinaryIntOp { destination: Relative(60), op: LessThanEquals, bit_size: U32, lhs: Relative(56), rhs: Relative(59) }, JumpIf { condition: Relative(60), location: 14224 }, Call { location: 18867 }, Store { destination_pointer: Relative(15), source: Relative(55) }, Store { destination_pointer: Relative(2), source: Relative(59) }, Jump { location: 14227 }, Load { destination: Relative(55), source_pointer: Relative(54) }, JumpIf { condition: Relative(55), location: 14230 }, Jump { location: 14266 }, Load { destination: Relative(54), source_pointer: Relative(15) }, Load { destination: Relative(55), source_pointer: Relative(2) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(56), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Store { destination_pointer: Relative(60), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(56) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(58) }, Store { destination_pointer: Relative(59), source: Relative(38) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Store { destination_pointer: Relative(59), source: Relative(42) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(56), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(54) }, Store { destination_pointer: Relative(59), source: Relative(7) }, Store { destination_pointer: Relative(15), source: Relative(56) }, Store { destination_pointer: Relative(2), source: Relative(55) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Jump { location: 14266 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Relative(35), source: Relative(54) }, Jump { location: 14150 }, Load { destination: Relative(50), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(35), rhs: Relative(50) }, JumpIf { condition: Relative(54), location: 14273 }, Jump { location: 14296 }, Load { destination: Relative(50), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Load { destination: Relative(59), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(35) }, Load { destination: Relative(60), source_pointer: Relative(62) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(35) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryFieldOp { destination: Relative(62), op: Add, lhs: Relative(60), rhs: Relative(61) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(60), source: Direct(32773) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(35) }, Store { destination_pointer: Relative(63), source: Relative(62) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Store { destination_pointer: Relative(56), source: Relative(60) }, Store { destination_pointer: Relative(57), source: Relative(55) }, Store { destination_pointer: Relative(58), source: Relative(59) }, Jump { location: 14296 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, Mov { destination: Relative(35), source: Relative(50) }, Jump { location: 14114 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(30) }, Load { destination: Relative(38), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(42) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(42) }, Load { destination: Relative(30), source_pointer: Relative(55) }, Not { destination: Relative(42), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(42), rhs: Relative(38) }, JumpIf { condition: Relative(30), location: 14319 }, Jump { location: 14347 }, Load { destination: Relative(30), source_pointer: Relative(35) }, Load { destination: Relative(38), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(42), location: 14324 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(42) }, Store { destination_pointer: Relative(56), source: Relative(49) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(30) }, Store { destination_pointer: Relative(55), source: Relative(50) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(3) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, JumpIf { condition: Relative(49), location: 14344 }, Call { location: 18867 }, Store { destination_pointer: Relative(35), source: Relative(42) }, Store { destination_pointer: Relative(15), source: Relative(30) }, Jump { location: 14347 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 5202 }, Load { destination: Relative(35), source_pointer: Relative(30) }, JumpIf { condition: Relative(35), location: 14459 }, Jump { location: 14353 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(35) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 14360 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 14370 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, JumpIf { condition: Relative(54), location: 14370 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14374 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14379 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(55) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 14386 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(38), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Not { destination: Relative(55), source: Relative(38), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Or, bit_size: U1, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(38), location: 14410 }, Jump { location: 14405 }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(54), rhs: Relative(14) }, JumpIf { condition: Relative(38), location: 14408 }, Jump { location: 14420 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Jump { location: 14420 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(4) }, Load { destination: Relative(42), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 14417 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(38) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Jump { location: 14420 }, Load { destination: Relative(38), source_pointer: Relative(35) }, JumpIf { condition: Relative(38), location: 14423 }, Jump { location: 14459 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(14) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Store { destination_pointer: Relative(54), source: Relative(15) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(42) }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Jump { location: 14459 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 5136 }, Load { destination: Relative(2), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(35), location: 14466 }, Jump { location: 14489 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryFieldOp { destination: Relative(57), op: Add, lhs: Relative(55), rhs: Relative(56) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Store { destination_pointer: Relative(58), source: Relative(57) }, Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(55) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(54) }, Jump { location: 14489 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 5100 }, Load { destination: Relative(35), source_pointer: Relative(30) }, JumpIf { condition: Relative(35), location: 14601 }, Jump { location: 14495 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(35) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 14502 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 14512 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, JumpIf { condition: Relative(54), location: 14512 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14516 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14521 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(55) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 14528 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(38), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Not { destination: Relative(55), source: Relative(38), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Or, bit_size: U1, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(38), location: 14552 }, Jump { location: 14547 }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(54), rhs: Relative(48) }, JumpIf { condition: Relative(38), location: 14550 }, Jump { location: 14562 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Jump { location: 14562 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(4) }, Load { destination: Relative(42), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 14559 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(38) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Jump { location: 14562 }, Load { destination: Relative(38), source_pointer: Relative(35) }, JumpIf { condition: Relative(38), location: 14565 }, Jump { location: 14601 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(48) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Store { destination_pointer: Relative(54), source: Relative(47) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(42) }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Jump { location: 14601 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 5033 }, Load { destination: Relative(2), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(35), location: 14608 }, Jump { location: 14631 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(42) }, Load { destination: Relative(38), source_pointer: Relative(49) }, Load { destination: Relative(54), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryFieldOp { destination: Relative(57), op: Add, lhs: Relative(55), rhs: Relative(56) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Store { destination_pointer: Relative(58), source: Relative(57) }, Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(42), source: Relative(55) }, Store { destination_pointer: Relative(49), source: Relative(38) }, Store { destination_pointer: Relative(50), source: Relative(54) }, Jump { location: 14631 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 4997 }, Load { destination: Relative(35), source_pointer: Relative(30) }, JumpIf { condition: Relative(35), location: 14743 }, Jump { location: 14637 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(35) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(38) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 14644 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 14654 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(38), rhs: Relative(1) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, JumpIf { condition: Relative(54), location: 14654 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14658 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(38), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(38) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 14663 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, BinaryIntOp { destination: Relative(38), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(55) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(38), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 14670 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(38), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(38), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Mov { destination: Relative(35), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(7) }, Not { destination: Relative(55), source: Relative(38), bit_size: U1 }, BinaryIntOp { destination: Relative(38), op: Or, bit_size: U1, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(38), location: 14694 }, Jump { location: 14689 }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(54), rhs: Relative(51) }, JumpIf { condition: Relative(38), location: 14692 }, Jump { location: 14704 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Jump { location: 14704 }, Store { destination_pointer: Relative(35), source: Relative(13) }, Load { destination: Relative(38), source_pointer: Relative(4) }, Load { destination: Relative(42), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 14701 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(38) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Jump { location: 14704 }, Load { destination: Relative(38), source_pointer: Relative(35) }, JumpIf { condition: Relative(38), location: 14707 }, Jump { location: 14743 }, Load { destination: Relative(35), source_pointer: Relative(4) }, Load { destination: Relative(38), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(51) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Store { destination_pointer: Relative(54), source: Relative(43) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(35) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(42) }, Store { destination_pointer: Relative(11), source: Relative(38) }, Store { destination_pointer: Relative(30), source: Relative(13) }, Jump { location: 14743 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 4930 }, Load { destination: Relative(2), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(35), location: 14750 }, Jump { location: 14773 }, Load { destination: Relative(2), source_pointer: Relative(30) }, Load { destination: Relative(35), source_pointer: Relative(38) }, Load { destination: Relative(50), source_pointer: Relative(42) }, Load { destination: Relative(54), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryFieldOp { destination: Relative(57), op: Add, lhs: Relative(55), rhs: Relative(56) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Store { destination_pointer: Relative(58), source: Relative(57) }, Store { destination_pointer: Relative(30), source: Relative(2) }, Store { destination_pointer: Relative(38), source: Relative(55) }, Store { destination_pointer: Relative(42), source: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Jump { location: 14773 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 4894 }, Load { destination: Relative(30), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(35) }, Load { destination: Relative(38), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(42) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(35) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(42) }, Load { destination: Relative(35), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(42), op: Equals, lhs: Relative(38), rhs: Relative(50) }, BinaryFieldOp { destination: Relative(38), op: Equals, lhs: Relative(49), rhs: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U1, lhs: Relative(42), rhs: Relative(38) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(35) }, Store { destination_pointer: Relative(11), source: Relative(38) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(30) }, Jump { location: 4767 }, Load { destination: Relative(35), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(1) }, Load { destination: Relative(38), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, Load { destination: Relative(42), source_pointer: Relative(50) }, BinaryFieldOp { destination: Relative(49), op: Equals, lhs: Relative(38), rhs: Relative(42) }, BinaryIntOp { destination: Relative(38), op: Mul, bit_size: U1, lhs: Relative(35), rhs: Relative(49) }, Store { destination_pointer: Relative(30), source: Relative(38) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 4731 }, Load { destination: Relative(38), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, Load { destination: Relative(42), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryFieldOp { destination: Relative(50), op: Equals, lhs: Relative(42), rhs: Relative(49) }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U1, lhs: Relative(38), rhs: Relative(50) }, Store { destination_pointer: Relative(35), source: Relative(42) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(38) }, Jump { location: 4701 }, Load { destination: Relative(35), source_pointer: Relative(50) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(38), rhs: Relative(35) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 14831 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(35) }, Load { destination: Relative(42), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Load { destination: Relative(35), source_pointer: Relative(55) }, Load { destination: Relative(49), source_pointer: Relative(30) }, Load { destination: Relative(54), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, JumpIf { condition: Relative(55), location: 14846 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(56), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Store { destination_pointer: Relative(58), source: Relative(42) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(56) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(42) }, Store { destination_pointer: Relative(57), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(54), rhs: Relative(35) }, JumpIf { condition: Relative(42), location: 14866 }, Call { location: 18867 }, Store { destination_pointer: Relative(30), source: Relative(49) }, Store { destination_pointer: Relative(4), source: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(35) }, Jump { location: 4384 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(5) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(57) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(57) }, Load { destination: Relative(55), source_pointer: Relative(61) }, Not { destination: Relative(57), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U1, lhs: Relative(57), rhs: Relative(56) }, JumpIf { condition: Relative(55), location: 14891 }, Jump { location: 14919 }, Load { destination: Relative(55), source_pointer: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Relative(16) }, JumpIf { condition: Relative(57), location: 14896 }, Call { location: 18963 }, BinaryIntOp { destination: Relative(57), op: Mul, bit_size: U32, lhs: Relative(56), rhs: Relative(5) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(60), source: Direct(32773) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Direct(2) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(61), rhs: Relative(57) }, Store { destination_pointer: Relative(62), source: Relative(58) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(60) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 17 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(55) }, Store { destination_pointer: Relative(61), source: Relative(59) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(58), location: 14916 }, Call { location: 18867 }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(10), source: Relative(55) }, Jump { location: 14919 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(55) }, Jump { location: 4142 }, Load { destination: Relative(54), source_pointer: Relative(11) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Not { destination: Relative(57), source: Relative(57), bit_size: U1 }, JumpIf { condition: Relative(57), location: 14928 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(54) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(58) }, Load { destination: Relative(57), source_pointer: Relative(56) }, Load { destination: Relative(58), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(59), op: LessThan, bit_size: U32, lhs: Relative(58), rhs: Direct(32837) }, JumpIf { condition: Relative(59), location: 14938 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(59), source: Direct(32773) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Store { destination_pointer: Relative(61), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(3) }, BinaryIntOp { destination: Relative(57), op: LessThanEquals, bit_size: U32, lhs: Relative(58), rhs: Relative(54) }, JumpIf { condition: Relative(57), location: 14949 }, Call { location: 18867 }, Store { destination_pointer: Relative(56), source: Relative(59) }, Store { destination_pointer: Relative(50), source: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(54) }, Jump { location: 3842 }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(5) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(57) }, Load { destination: Relative(54), source_pointer: Relative(60) }, Not { destination: Relative(57), source: Relative(54), bit_size: U1 }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U1, lhs: Relative(57), rhs: Relative(56) }, JumpIf { condition: Relative(54), location: 14970 }, Jump { location: 14989 }, Load { destination: Relative(54), source_pointer: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Relative(16) }, JumpIf { condition: Relative(57), location: 14975 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(56) }, Store { destination_pointer: Relative(60), source: Relative(58) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, JumpIf { condition: Relative(58), location: 14986 }, Call { location: 18867 }, Store { destination_pointer: Relative(55), source: Relative(57) }, Store { destination_pointer: Relative(52), source: Relative(54) }, Jump { location: 14989 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(54) }, Jump { location: 3608 }, Load { destination: Relative(50), source_pointer: Relative(2) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 14998 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(50), source_pointer: Relative(56) }, Load { destination: Relative(55), source_pointer: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(56), rhs: Direct(32837) }, JumpIf { condition: Relative(57), location: 15008 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Store { destination_pointer: Relative(59), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(56), rhs: Relative(50) }, JumpIf { condition: Relative(55), location: 15019 }, Call { location: 18867 }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(11), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(50) }, Jump { location: 3316 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(50) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(50), source_pointer: Relative(57) }, Not { destination: Relative(54), source: Relative(50), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(54), rhs: Relative(53) }, JumpIf { condition: Relative(50), location: 15040 }, Jump { location: 15059 }, Load { destination: Relative(50), source_pointer: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(53), rhs: Relative(16) }, JumpIf { condition: Relative(54), location: 15045 }, Call { location: 18963 }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 9 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(53) }, Store { destination_pointer: Relative(57), source: Relative(55) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, JumpIf { condition: Relative(55), location: 15056 }, Call { location: 18867 }, Store { destination_pointer: Relative(52), source: Relative(54) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Jump { location: 15059 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(50) }, Jump { location: 3085 }, Load { destination: Relative(49), source_pointer: Relative(11) }, JumpIf { condition: Relative(49), location: 15171 }, Jump { location: 15065 }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(49) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 15072 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(53), location: 15082 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, JumpIf { condition: Relative(55), location: 15082 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15086 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(5) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(50) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15091 }, Call { location: 18867 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(54) }, BinaryIntOp { destination: Relative(56), op: Mul, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Sub, bit_size: U32, lhs: Relative(53), rhs: Relative(56) }, BinaryIntOp { destination: Relative(53), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Relative(16) }, JumpIf { condition: Relative(53), location: 15098 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Not { destination: Relative(56), source: Relative(50), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Or, bit_size: U1, lhs: Relative(57), rhs: Relative(56) }, JumpIf { condition: Relative(50), location: 15122 }, Jump { location: 15117 }, BinaryFieldOp { destination: Relative(50), op: Equals, lhs: Relative(55), rhs: Relative(14) }, JumpIf { condition: Relative(50), location: 15120 }, Jump { location: 15132 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Jump { location: 15132 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Load { destination: Relative(50), source_pointer: Relative(4) }, Load { destination: Relative(52), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(52), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 15129 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(50) }, Store { destination_pointer: Relative(10), source: Relative(55) }, Jump { location: 15132 }, Load { destination: Relative(50), source_pointer: Relative(49) }, JumpIf { condition: Relative(50), location: 15135 }, Jump { location: 15171 }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(14) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(53), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(15) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(53) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(52) }, Store { destination_pointer: Relative(10), source: Relative(50) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Jump { location: 15171 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(49) }, Jump { location: 3035 }, Load { destination: Relative(2), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(49), location: 15178 }, Jump { location: 15201 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(49), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(53) }, Load { destination: Relative(55), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(1) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryFieldOp { destination: Relative(58), op: Add, lhs: Relative(56), rhs: Relative(57) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(56), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Store { destination_pointer: Relative(59), source: Relative(58) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(52), source: Relative(56) }, Store { destination_pointer: Relative(53), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(55) }, Jump { location: 15201 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2999 }, Load { destination: Relative(49), source_pointer: Relative(11) }, JumpIf { condition: Relative(49), location: 15313 }, Jump { location: 15207 }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(49) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 15214 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(50) }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(53), location: 15224 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, JumpIf { condition: Relative(55), location: 15224 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15228 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(5) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(50) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15233 }, Call { location: 18867 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(54) }, BinaryIntOp { destination: Relative(56), op: Mul, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Sub, bit_size: U32, lhs: Relative(53), rhs: Relative(56) }, BinaryIntOp { destination: Relative(53), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Relative(16) }, JumpIf { condition: Relative(53), location: 15240 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Not { destination: Relative(56), source: Relative(50), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Or, bit_size: U1, lhs: Relative(57), rhs: Relative(56) }, JumpIf { condition: Relative(50), location: 15264 }, Jump { location: 15259 }, BinaryFieldOp { destination: Relative(50), op: Equals, lhs: Relative(55), rhs: Relative(48) }, JumpIf { condition: Relative(50), location: 15262 }, Jump { location: 15274 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Jump { location: 15274 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Load { destination: Relative(50), source_pointer: Relative(4) }, Load { destination: Relative(52), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(52), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 15271 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(50) }, Store { destination_pointer: Relative(10), source: Relative(55) }, Jump { location: 15274 }, Load { destination: Relative(50), source_pointer: Relative(49) }, JumpIf { condition: Relative(50), location: 15277 }, Jump { location: 15313 }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(48) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(53), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(47) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(53) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(49) }, Store { destination_pointer: Relative(55), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(52) }, Store { destination_pointer: Relative(10), source: Relative(50) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Jump { location: 15313 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(49) }, Jump { location: 2932 }, Load { destination: Relative(2), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(47), location: 15320 }, Jump { location: 15343 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(47), source_pointer: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(52) }, Load { destination: Relative(54), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(1) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryFieldOp { destination: Relative(57), op: Add, lhs: Relative(55), rhs: Relative(56) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Store { destination_pointer: Relative(58), source: Relative(57) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(50), source: Relative(55) }, Store { destination_pointer: Relative(52), source: Relative(49) }, Store { destination_pointer: Relative(53), source: Relative(54) }, Jump { location: 15343 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2895 }, Load { destination: Relative(47), source_pointer: Relative(11) }, JumpIf { condition: Relative(47), location: 15455 }, Jump { location: 15349 }, Load { destination: Relative(47), source_pointer: Relative(4) }, Load { destination: Relative(49), source_pointer: Relative(47) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 15356 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(1) }, JumpIf { condition: Relative(52), location: 15366 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(1) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, JumpIf { condition: Relative(54), location: 15366 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, BinaryIntOp { destination: Relative(53), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(52) }, JumpIf { condition: Relative(53), location: 15370 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(52), rhs: Relative(5) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, BinaryIntOp { destination: Relative(53), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(52) }, JumpIf { condition: Relative(53), location: 15375 }, Call { location: 18867 }, Const { destination: Relative(53), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(52), rhs: Relative(53) }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, BinaryIntOp { destination: Relative(49), op: Sub, bit_size: U32, lhs: Relative(52), rhs: Relative(55) }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Relative(16) }, JumpIf { condition: Relative(52), location: 15382 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Load { destination: Relative(49), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(53) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(7) }, Not { destination: Relative(55), source: Relative(49), bit_size: U1 }, BinaryIntOp { destination: Relative(49), op: Or, bit_size: U1, lhs: Relative(56), rhs: Relative(55) }, JumpIf { condition: Relative(49), location: 15406 }, Jump { location: 15401 }, BinaryFieldOp { destination: Relative(49), op: Equals, lhs: Relative(54), rhs: Relative(51) }, JumpIf { condition: Relative(49), location: 15404 }, Jump { location: 15416 }, Store { destination_pointer: Relative(47), source: Relative(13) }, Jump { location: 15416 }, Store { destination_pointer: Relative(47), source: Relative(13) }, Load { destination: Relative(49), source_pointer: Relative(4) }, Load { destination: Relative(50), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 15413 }, Call { location: 18867 }, Store { destination_pointer: Relative(4), source: Relative(49) }, Store { destination_pointer: Relative(10), source: Relative(54) }, Jump { location: 15416 }, Load { destination: Relative(49), source_pointer: Relative(47) }, JumpIf { condition: Relative(49), location: 15419 }, Jump { location: 15455 }, Load { destination: Relative(47), source_pointer: Relative(4) }, Load { destination: Relative(49), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(53) }, Store { destination_pointer: Relative(54), source: Relative(51) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(43) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(47) }, Store { destination_pointer: Relative(54), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(50) }, Store { destination_pointer: Relative(10), source: Relative(49) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Jump { location: 15455 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(47) }, Jump { location: 2828 }, Load { destination: Relative(2), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(43), location: 15462 }, Jump { location: 15485 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(43), source_pointer: Relative(47) }, Load { destination: Relative(52), source_pointer: Relative(49) }, Load { destination: Relative(53), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(11), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(54) }, Store { destination_pointer: Relative(49), source: Relative(52) }, Store { destination_pointer: Relative(50), source: Relative(53) }, Jump { location: 15485 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2791 }, Load { destination: Relative(43), source_pointer: Relative(11) }, JumpIf { condition: Relative(43), location: 15545 }, Jump { location: 15491 }, Load { destination: Relative(43), source_pointer: Relative(2) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 15497 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(43) }, BinaryIntOp { destination: Relative(43), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 15507 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(43), rhs: Relative(1) }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(1) }, JumpIf { condition: Relative(52), location: 15507 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(43) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 15511 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(43), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(43) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 15516 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, BinaryIntOp { destination: Relative(43), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(53) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(43), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 15523 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(43), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(43), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(54) }, Not { destination: Relative(50), source: Relative(49), bit_size: U1 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U1, lhs: Relative(50), rhs: Relative(43) }, JumpIf { condition: Relative(49), location: 15539 }, Jump { location: 15545 }, BinaryFieldOp { destination: Relative(43), op: Equals, lhs: Relative(52), rhs: Relative(51) }, JumpIf { condition: Relative(43), location: 15542 }, Jump { location: 15545 }, Store { destination_pointer: Relative(4), source: Relative(13) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Jump { location: 15545 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(43) }, Jump { location: 2663 }, Load { destination: Relative(10), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 15552 }, Jump { location: 15575 }, Load { destination: Relative(10), source_pointer: Relative(47) }, Load { destination: Relative(11), source_pointer: Relative(49) }, Load { destination: Relative(43), source_pointer: Relative(50) }, Load { destination: Relative(53), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(11) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(47), source: Relative(10) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(43) }, Store { destination_pointer: Relative(52), source: Relative(53) }, Jump { location: 15575 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(10) }, Jump { location: 2627 }, Load { destination: Relative(4), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(43), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(43) }, Load { destination: Relative(47), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(3) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(52) }, Load { destination: Relative(54), source_pointer: Relative(56) }, Not { destination: Relative(4), source: Relative(54), bit_size: U1 }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U1, lhs: Relative(4), rhs: Relative(47) }, JumpIf { condition: Relative(52), location: 15599 }, Jump { location: 15642 }, BinaryFieldOp { destination: Relative(4), op: Mul, lhs: Relative(50), rhs: Relative(53) }, BinaryFieldOp { destination: Relative(52), op: Equals, lhs: Relative(4), rhs: Relative(2) }, JumpIf { condition: Relative(52), location: 15642 }, Jump { location: 15603 }, Load { destination: Relative(4), source_pointer: Relative(10) }, Load { destination: Relative(52), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(54), op: Sub, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(52) }, JumpIf { condition: Relative(55), location: 15609 }, Call { location: 18951 }, Mov { destination: Direct(32771), source: Relative(4) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(43) }, Store { destination_pointer: Relative(56), source: Relative(47) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(49) }, Store { destination_pointer: Relative(47), source: Relative(50) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(4) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(43) }, Store { destination_pointer: Relative(50), source: Relative(53) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(43), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(4) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(43) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Jump { location: 15642 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 2562 }, Load { destination: Relative(43), source_pointer: Relative(4) }, JumpIf { condition: Relative(43), location: 15754 }, Jump { location: 15648 }, Load { destination: Relative(43), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(43) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(47) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 15655 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 15665 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(47), rhs: Relative(1) }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(53), location: 15665 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(47) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, JumpIf { condition: Relative(52), location: 15669 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(47), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(47) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(50) }, JumpIf { condition: Relative(52), location: 15674 }, Call { location: 18867 }, Const { destination: Relative(52), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, BinaryIntOp { destination: Relative(47), op: Sub, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(50), location: 15681 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(47), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Not { destination: Relative(54), source: Relative(47), bit_size: U1 }, BinaryIntOp { destination: Relative(47), op: Or, bit_size: U1, lhs: Relative(55), rhs: Relative(54) }, JumpIf { condition: Relative(47), location: 15705 }, Jump { location: 15700 }, BinaryFieldOp { destination: Relative(47), op: Equals, lhs: Relative(53), rhs: Relative(14) }, JumpIf { condition: Relative(47), location: 15703 }, Jump { location: 15715 }, Store { destination_pointer: Relative(43), source: Relative(13) }, Jump { location: 15715 }, Store { destination_pointer: Relative(43), source: Relative(13) }, Load { destination: Relative(47), source_pointer: Relative(10) }, Load { destination: Relative(49), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15712 }, Call { location: 18867 }, Store { destination_pointer: Relative(10), source: Relative(47) }, Store { destination_pointer: Relative(11), source: Relative(53) }, Jump { location: 15715 }, Load { destination: Relative(47), source_pointer: Relative(43) }, JumpIf { condition: Relative(47), location: 15718 }, Jump { location: 15754 }, Load { destination: Relative(43), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(43), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(14) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Store { destination_pointer: Relative(53), source: Relative(48) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(43) }, Store { destination_pointer: Relative(53), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(49) }, Store { destination_pointer: Relative(11), source: Relative(47) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 15754 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(43) }, Jump { location: 2556 }, Load { destination: Relative(2), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(43), location: 15761 }, Jump { location: 15784 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(43), source_pointer: Relative(49) }, Load { destination: Relative(47), source_pointer: Relative(50) }, Load { destination: Relative(53), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(1) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(49), source: Relative(54) }, Store { destination_pointer: Relative(50), source: Relative(47) }, Store { destination_pointer: Relative(52), source: Relative(53) }, Jump { location: 15784 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2520 }, Load { destination: Relative(43), source_pointer: Relative(4) }, JumpIf { condition: Relative(43), location: 15896 }, Jump { location: 15790 }, Load { destination: Relative(43), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(43) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(47) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 15797 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 15807 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(47), rhs: Relative(1) }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, JumpIf { condition: Relative(53), location: 15807 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(47) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, JumpIf { condition: Relative(52), location: 15811 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(47), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(47) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(50) }, JumpIf { condition: Relative(52), location: 15816 }, Call { location: 18867 }, Const { destination: Relative(52), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, BinaryIntOp { destination: Relative(47), op: Sub, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(50), location: 15823 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(47), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Not { destination: Relative(54), source: Relative(47), bit_size: U1 }, BinaryIntOp { destination: Relative(47), op: Or, bit_size: U1, lhs: Relative(55), rhs: Relative(54) }, JumpIf { condition: Relative(47), location: 15847 }, Jump { location: 15842 }, BinaryFieldOp { destination: Relative(47), op: Equals, lhs: Relative(53), rhs: Relative(51) }, JumpIf { condition: Relative(47), location: 15845 }, Jump { location: 15857 }, Store { destination_pointer: Relative(43), source: Relative(13) }, Jump { location: 15857 }, Store { destination_pointer: Relative(43), source: Relative(13) }, Load { destination: Relative(47), source_pointer: Relative(10) }, Load { destination: Relative(49), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(49), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 15854 }, Call { location: 18867 }, Store { destination_pointer: Relative(10), source: Relative(47) }, Store { destination_pointer: Relative(11), source: Relative(53) }, Jump { location: 15857 }, Load { destination: Relative(47), source_pointer: Relative(43) }, JumpIf { condition: Relative(47), location: 15860 }, Jump { location: 15896 }, Load { destination: Relative(43), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(43), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(51) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(43) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Store { destination_pointer: Relative(53), source: Relative(15) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(43) }, Store { destination_pointer: Relative(53), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(49) }, Store { destination_pointer: Relative(11), source: Relative(47) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 15896 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(43) }, Jump { location: 2453 }, Load { destination: Relative(2), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(15), location: 15903 }, Jump { location: 15926 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(47) }, Load { destination: Relative(43), source_pointer: Relative(49) }, Load { destination: Relative(52), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(53), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(53), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(53) }, Store { destination_pointer: Relative(49), source: Relative(43) }, Store { destination_pointer: Relative(50), source: Relative(52) }, Jump { location: 15926 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2416 }, Load { destination: Relative(15), source_pointer: Relative(4) }, JumpIf { condition: Relative(15), location: 16038 }, Jump { location: 15932 }, Load { destination: Relative(15), source_pointer: Relative(10) }, Load { destination: Relative(43), source_pointer: Relative(15) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 15939 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(43) }, BinaryIntOp { destination: Relative(43), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(1) }, JumpIf { condition: Relative(49), location: 15949 }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(43), rhs: Relative(1) }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(1) }, JumpIf { condition: Relative(51), location: 15949 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(43) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 15953 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(43), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(43) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 15958 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, BinaryIntOp { destination: Relative(43), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(52) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(43), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 15965 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(43), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(43), source_pointer: Relative(51) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Not { destination: Relative(52), source: Relative(43), bit_size: U1 }, BinaryIntOp { destination: Relative(43), op: Or, bit_size: U1, lhs: Relative(53), rhs: Relative(52) }, JumpIf { condition: Relative(43), location: 15989 }, Jump { location: 15984 }, BinaryFieldOp { destination: Relative(43), op: Equals, lhs: Relative(51), rhs: Relative(48) }, JumpIf { condition: Relative(43), location: 15987 }, Jump { location: 15999 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 15999 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Load { destination: Relative(43), source_pointer: Relative(10) }, Load { destination: Relative(47), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(47), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 15996 }, Call { location: 18867 }, Store { destination_pointer: Relative(10), source: Relative(43) }, Store { destination_pointer: Relative(11), source: Relative(51) }, Jump { location: 15999 }, Load { destination: Relative(43), source_pointer: Relative(15) }, JumpIf { condition: Relative(43), location: 16002 }, Jump { location: 16038 }, Load { destination: Relative(15), source_pointer: Relative(10) }, Load { destination: Relative(43), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(49) }, Store { destination_pointer: Relative(52), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(51), source: Relative(48) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(47) }, Store { destination_pointer: Relative(51), source: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(15) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(47) }, Store { destination_pointer: Relative(11), source: Relative(43) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Jump { location: 16038 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(15) }, Jump { location: 2348 }, Load { destination: Relative(2), source_pointer: Relative(43) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(15), location: 16045 }, Jump { location: 16068 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(43) }, Load { destination: Relative(50), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(1) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(1) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryFieldOp { destination: Relative(53), op: Add, lhs: Relative(51), rhs: Relative(52) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(51), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(1) }, Store { destination_pointer: Relative(54), source: Relative(53) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(14), source: Relative(51) }, Store { destination_pointer: Relative(43), source: Relative(49) }, Store { destination_pointer: Relative(47), source: Relative(50) }, Jump { location: 16068 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2311 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(3) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(43) }, Load { destination: Relative(47), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(43) }, Load { destination: Relative(48), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(43) }, Load { destination: Relative(14), source_pointer: Relative(50) }, Load { destination: Relative(43), source_pointer: Relative(11) }, Not { destination: Relative(49), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(49), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(43), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 16093 }, Jump { location: 16198 }, Load { destination: Relative(15), source_pointer: Relative(4) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(15) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 16099 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(8) }, Load { destination: Relative(50), source_pointer: Relative(4) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Not { destination: Relative(52), source: Relative(52), bit_size: U1 }, JumpIf { condition: Relative(52), location: 16113 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(50) }, Load { destination: Relative(50), source_pointer: Relative(2) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 16121 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(57) }, IndirectConst { destination_pointer: Relative(56), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Mov { destination: Relative(58), source: Relative(57) }, Store { destination_pointer: Relative(58), source: Relative(47) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(8) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, Store { destination_pointer: Relative(58), source: Relative(8) }, Store { destination_pointer: Relative(50), source: Relative(56) }, Store { destination_pointer: Relative(53), source: Relative(2) }, Store { destination_pointer: Relative(54), source: Relative(3) }, Store { destination_pointer: Relative(55), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(12) }, Jump { location: 16148 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Direct(32837) }, JumpIf { condition: Relative(43), location: 16266 }, Jump { location: 16151 }, Load { destination: Relative(43), source_pointer: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(51) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 16160 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(56) }, Mov { destination: Relative(56), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(56), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(58), size: Relative(59) }, output: HeapArray { pointer: Relative(60), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(50), source: Relative(43) }, Store { destination_pointer: Relative(53), source: Relative(56) }, Store { destination_pointer: Relative(54), source: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(13) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, Load { destination: Relative(43), source_pointer: Relative(50) }, Cast { destination: Relative(51), source: Relative(43), bit_size: Integer(U32) }, Cast { destination: Relative(50), source: Relative(51), bit_size: Field }, Cast { destination: Relative(43), source: Relative(50), bit_size: Integer(U32) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(12) }, Jump { location: 16184 }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, JumpIf { condition: Relative(51), location: 16201 }, Jump { location: 16187 }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(49) }, JumpIf { condition: Relative(14), location: 16193 }, Jump { location: 16191 }, Store { destination_pointer: Relative(11), source: Relative(7) }, Jump { location: 16198 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(48), rhs: Relative(15) }, JumpIf { condition: Relative(14), location: 16198 }, Jump { location: 16196 }, Store { destination_pointer: Relative(11), source: Relative(7) }, Jump { location: 16198 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Mov { destination: Relative(10), source: Relative(14) }, Jump { location: 2194 }, Load { destination: Relative(51), source_pointer: Relative(50) }, JumpIf { condition: Relative(51), location: 16263 }, Jump { location: 16204 }, Load { destination: Relative(51), source_pointer: Relative(4) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 16210 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(51) }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(14) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(14) }, JumpIf { condition: Relative(53), location: 16220 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(51), rhs: Relative(14) }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(14) }, JumpIf { condition: Relative(55), location: 16220 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(51) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 16224 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(5) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(51) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(43), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 16229 }, Call { location: 18867 }, Const { destination: Relative(54), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(54) }, BinaryIntOp { destination: Relative(56), op: Mul, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, BinaryIntOp { destination: Relative(51), op: Sub, bit_size: U32, lhs: Relative(53), rhs: Relative(56) }, BinaryIntOp { destination: Relative(53), op: LessThan, bit_size: U32, lhs: Relative(51), rhs: Relative(16) }, JumpIf { condition: Relative(53), location: 16236 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(51), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Load { destination: Relative(51), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(5) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(58) }, Not { destination: Relative(54), source: Relative(53), bit_size: U1 }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U1, lhs: Relative(54), rhs: Relative(51) }, JumpIf { condition: Relative(53), location: 16256 }, Jump { location: 16263 }, BinaryFieldOp { destination: Relative(51), op: Equals, lhs: Relative(55), rhs: Relative(47) }, JumpIf { condition: Relative(51), location: 16259 }, Jump { location: 16263 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(49), source: Relative(56) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Jump { location: 16263 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(3) }, Mov { destination: Relative(14), source: Relative(51) }, Jump { location: 16184 }, Load { destination: Relative(43), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(43) }, JumpIf { condition: Relative(51), location: 16270 }, Jump { location: 16293 }, Load { destination: Relative(43), source_pointer: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(56), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(14) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(14) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryFieldOp { destination: Relative(59), op: Add, lhs: Relative(57), rhs: Relative(58) }, Mov { destination: Direct(32771), source: Relative(51) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(57), source: Direct(32773) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(14) }, Store { destination_pointer: Relative(60), source: Relative(59) }, Store { destination_pointer: Relative(50), source: Relative(43) }, Store { destination_pointer: Relative(53), source: Relative(57) }, Store { destination_pointer: Relative(54), source: Relative(52) }, Store { destination_pointer: Relative(55), source: Relative(56) }, Jump { location: 16293 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(3) }, Mov { destination: Relative(14), source: Relative(43) }, Jump { location: 16148 }, Load { destination: Relative(47), source_pointer: Relative(43) }, JumpIf { condition: Relative(47), location: 16395 }, Jump { location: 16299 }, Load { destination: Relative(47), source_pointer: Relative(15) }, Load { destination: Relative(48), source_pointer: Relative(47) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 16306 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(48) }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(1) }, JumpIf { condition: Relative(50), location: 16316 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(1) }, BinaryIntOp { destination: Relative(52), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(1) }, JumpIf { condition: Relative(52), location: 16316 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(48) }, BinaryIntOp { destination: Relative(51), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(50) }, JumpIf { condition: Relative(51), location: 16320 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(48), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(48) }, BinaryIntOp { destination: Relative(51), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(50) }, JumpIf { condition: Relative(51), location: 16325 }, Call { location: 18867 }, Const { destination: Relative(51), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(50), rhs: Relative(51) }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, BinaryIntOp { destination: Relative(48), op: Sub, bit_size: U32, lhs: Relative(50), rhs: Relative(53) }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(48), rhs: Relative(16) }, JumpIf { condition: Relative(50), location: 16332 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(48), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Load { destination: Relative(48), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(51) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(53) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(53) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Not { destination: Relative(47), source: Relative(55), bit_size: U1 }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U1, lhs: Relative(47), rhs: Relative(48) }, JumpIf { condition: Relative(53), location: 16352 }, Jump { location: 16395 }, BinaryFieldOp { destination: Relative(47), op: Equals, lhs: Relative(52), rhs: Relative(4) }, JumpIf { condition: Relative(47), location: 16355 }, Jump { location: 16395 }, Load { destination: Relative(47), source_pointer: Relative(15) }, Load { destination: Relative(49), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(53), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(50) }, Store { destination_pointer: Relative(56), source: Relative(48) }, Mov { destination: Direct(32771), source: Relative(53) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(51) }, Store { destination_pointer: Relative(50), source: Relative(52) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(48) }, Store { destination_pointer: Relative(52), source: Relative(54) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(48), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(47) }, Store { destination_pointer: Relative(52), source: Relative(13) }, BinaryIntOp { destination: Relative(47), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 16391 }, Call { location: 18951 }, Store { destination_pointer: Relative(15), source: Relative(48) }, Store { destination_pointer: Relative(14), source: Relative(47) }, Store { destination_pointer: Relative(43), source: Relative(13) }, Jump { location: 16395 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(47) }, Jump { location: 2133 }, Load { destination: Relative(2), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(48), location: 16402 }, Jump { location: 16425 }, Load { destination: Relative(2), source_pointer: Relative(43) }, Load { destination: Relative(48), source_pointer: Relative(47) }, Load { destination: Relative(51), source_pointer: Relative(49) }, Load { destination: Relative(52), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(1) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryFieldOp { destination: Relative(55), op: Add, lhs: Relative(53), rhs: Relative(54) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(53), source: Direct(32773) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(1) }, Store { destination_pointer: Relative(56), source: Relative(55) }, Store { destination_pointer: Relative(43), source: Relative(2) }, Store { destination_pointer: Relative(47), source: Relative(53) }, Store { destination_pointer: Relative(49), source: Relative(51) }, Store { destination_pointer: Relative(50), source: Relative(52) }, Jump { location: 16425 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 2097 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(52) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(56) }, Load { destination: Relative(52), source_pointer: Relative(49) }, Not { destination: Relative(55), source: Relative(50), bit_size: U1 }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U1, lhs: Relative(55), rhs: Relative(51) }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U1, lhs: Relative(52), rhs: Relative(50) }, JumpIf { condition: Relative(51), location: 16450 }, Jump { location: 16555 }, Load { destination: Relative(51), source_pointer: Relative(43) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 16456 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(51) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Load { destination: Relative(56), source_pointer: Relative(43) }, Const { destination: Relative(57), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(58), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, Not { destination: Relative(58), source: Relative(58), bit_size: U1 }, JumpIf { condition: Relative(58), location: 16470 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(56) }, Load { destination: Relative(56), source_pointer: Relative(48) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 16478 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(56), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(56) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(59), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(60), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(61), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(62), source: Direct(1) }, Const { destination: Relative(63), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(63) }, IndirectConst { destination_pointer: Relative(62), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, Mov { destination: Relative(64), source: Relative(63) }, Store { destination_pointer: Relative(64), source: Relative(53) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(64), rhs: Direct(2) }, Store { destination_pointer: Relative(64), source: Relative(8) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(64), rhs: Direct(2) }, Store { destination_pointer: Relative(64), source: Relative(8) }, Store { destination_pointer: Relative(56), source: Relative(62) }, Store { destination_pointer: Relative(59), source: Relative(48) }, Store { destination_pointer: Relative(60), source: Relative(3) }, Store { destination_pointer: Relative(61), source: Relative(7) }, Mov { destination: Relative(50), source: Relative(12) }, Jump { location: 16505 }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Direct(32837) }, JumpIf { condition: Relative(52), location: 16623 }, Jump { location: 16508 }, Load { destination: Relative(52), source_pointer: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Load { destination: Relative(58), source_pointer: Relative(60) }, Load { destination: Relative(62), source_pointer: Relative(57) }, Const { destination: Relative(63), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(64), op: Equals, bit_size: U32, lhs: Relative(63), rhs: Relative(62) }, Not { destination: Relative(64), source: Relative(64), bit_size: U1 }, JumpIf { condition: Relative(64), location: 16517 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, Store { destination_pointer: Relative(57), source: Relative(62) }, Mov { destination: Relative(62), source: Direct(1) }, Const { destination: Relative(64), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(64) }, IndirectConst { destination_pointer: Relative(62), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Const { destination: Relative(65), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(62), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(64), size: Relative(65) }, output: HeapArray { pointer: Relative(66), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(56), source: Relative(52) }, Store { destination_pointer: Relative(59), source: Relative(62) }, Store { destination_pointer: Relative(60), source: Relative(58) }, Store { destination_pointer: Relative(61), source: Relative(13) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(3) }, Load { destination: Relative(52), source_pointer: Relative(56) }, Cast { destination: Relative(57), source: Relative(52), bit_size: Integer(U32) }, Cast { destination: Relative(56), source: Relative(57), bit_size: Field }, Cast { destination: Relative(52), source: Relative(56), bit_size: Integer(U32) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(56), source: Relative(7) }, Mov { destination: Relative(50), source: Relative(12) }, Jump { location: 16541 }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Relative(16) }, JumpIf { condition: Relative(57), location: 16558 }, Jump { location: 16544 }, Load { destination: Relative(50), source_pointer: Relative(51) }, Load { destination: Relative(51), source_pointer: Relative(55) }, JumpIf { condition: Relative(50), location: 16550 }, Jump { location: 16548 }, Store { destination_pointer: Relative(49), source: Relative(7) }, Jump { location: 16555 }, BinaryFieldOp { destination: Relative(50), op: Equals, lhs: Relative(54), rhs: Relative(51) }, JumpIf { condition: Relative(50), location: 16555 }, Jump { location: 16553 }, Store { destination_pointer: Relative(49), source: Relative(7) }, Jump { location: 16555 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Relative(47), source: Relative(50) }, Jump { location: 2056 }, Load { destination: Relative(57), source_pointer: Relative(56) }, JumpIf { condition: Relative(57), location: 16620 }, Jump { location: 16561 }, Load { destination: Relative(57), source_pointer: Relative(43) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(57) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 16567 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(57) }, BinaryIntOp { destination: Relative(57), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Relative(50) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(60), rhs: Relative(50) }, JumpIf { condition: Relative(59), location: 16577 }, BinaryIntOp { destination: Relative(62), op: Div, bit_size: U32, lhs: Relative(57), rhs: Relative(50) }, BinaryIntOp { destination: Relative(61), op: Equals, bit_size: U32, lhs: Relative(62), rhs: Relative(50) }, JumpIf { condition: Relative(61), location: 16577 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(57) }, BinaryIntOp { destination: Relative(60), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(59) }, JumpIf { condition: Relative(60), location: 16581 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(57), op: Div, bit_size: U32, lhs: Relative(59), rhs: Relative(5) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(57) }, BinaryIntOp { destination: Relative(60), op: LessThanEquals, bit_size: U32, lhs: Relative(52), rhs: Relative(59) }, JumpIf { condition: Relative(60), location: 16586 }, Call { location: 18867 }, Const { destination: Relative(60), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(61), op: Div, bit_size: U32, lhs: Relative(59), rhs: Relative(60) }, BinaryIntOp { destination: Relative(62), op: Mul, bit_size: U32, lhs: Relative(61), rhs: Relative(60) }, BinaryIntOp { destination: Relative(57), op: Sub, bit_size: U32, lhs: Relative(59), rhs: Relative(62) }, BinaryIntOp { destination: Relative(59), op: LessThan, bit_size: U32, lhs: Relative(57), rhs: Relative(16) }, JumpIf { condition: Relative(59), location: 16593 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(59), op: Mul, bit_size: U32, lhs: Relative(57), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(59) }, Load { destination: Relative(57), source_pointer: Relative(61) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(3) }, BinaryIntOp { destination: Relative(62), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(62), rhs: Relative(60) }, Load { destination: Relative(61), source_pointer: Relative(63) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(5) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(60) }, Load { destination: Relative(62), source_pointer: Relative(64) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(63), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Relative(60) }, Load { destination: Relative(59), source_pointer: Relative(64) }, Not { destination: Relative(60), source: Relative(59), bit_size: U1 }, BinaryIntOp { destination: Relative(59), op: Mul, bit_size: U1, lhs: Relative(60), rhs: Relative(57) }, JumpIf { condition: Relative(59), location: 16613 }, Jump { location: 16620 }, BinaryFieldOp { destination: Relative(57), op: Equals, lhs: Relative(61), rhs: Relative(53) }, JumpIf { condition: Relative(57), location: 16616 }, Jump { location: 16620 }, Store { destination_pointer: Relative(51), source: Relative(13) }, Store { destination_pointer: Relative(55), source: Relative(62) }, Store { destination_pointer: Relative(56), source: Relative(13) }, Jump { location: 16620 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Relative(50), source: Relative(57) }, Jump { location: 16541 }, Load { destination: Relative(52), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(57), op: LessThan, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, JumpIf { condition: Relative(57), location: 16627 }, Jump { location: 16650 }, Load { destination: Relative(52), source_pointer: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, Load { destination: Relative(58), source_pointer: Relative(60) }, Load { destination: Relative(62), source_pointer: Relative(61) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(50) }, Load { destination: Relative(63), source_pointer: Relative(65) }, BinaryIntOp { destination: Relative(65), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(65), rhs: Relative(50) }, Load { destination: Relative(64), source_pointer: Relative(66) }, BinaryFieldOp { destination: Relative(65), op: Add, lhs: Relative(63), rhs: Relative(64) }, Mov { destination: Direct(32771), source: Relative(57) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(63), source: Direct(32773) }, BinaryIntOp { destination: Relative(64), op: Add, bit_size: U32, lhs: Relative(63), rhs: Direct(2) }, BinaryIntOp { destination: Relative(66), op: Add, bit_size: U32, lhs: Relative(64), rhs: Relative(50) }, Store { destination_pointer: Relative(66), source: Relative(65) }, Store { destination_pointer: Relative(56), source: Relative(52) }, Store { destination_pointer: Relative(59), source: Relative(63) }, Store { destination_pointer: Relative(60), source: Relative(58) }, Store { destination_pointer: Relative(61), source: Relative(62) }, Jump { location: 16650 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Relative(50), source: Relative(52) }, Jump { location: 16505 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(5) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Load { destination: Relative(49), source_pointer: Relative(51) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Load { destination: Relative(48), source_pointer: Relative(52) }, Load { destination: Relative(50), source_pointer: Relative(11) }, Load { destination: Relative(51), source_pointer: Relative(10) }, Load { destination: Relative(52), source_pointer: Relative(50) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16669 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(52) }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(51), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(52), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(51) }, JumpIf { condition: Relative(54), location: 16676 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(52), rhs: Relative(40) }, JumpIf { condition: Relative(51), location: 16679 }, Call { location: 18806 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16685 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Load { destination: Relative(50), source_pointer: Relative(43) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16693 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Mov { destination: Relative(59), source: Relative(58) }, Store { destination_pointer: Relative(59), source: Relative(49) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, Store { destination_pointer: Relative(50), source: Relative(57) }, Store { destination_pointer: Relative(54), source: Relative(43) }, Store { destination_pointer: Relative(55), source: Relative(3) }, Store { destination_pointer: Relative(56), source: Relative(7) }, Mov { destination: Relative(47), source: Relative(12) }, Jump { location: 16720 }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Direct(32837) }, JumpIf { condition: Relative(51), location: 17114 }, Jump { location: 16723 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(52) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(57) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 16732 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(57) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(59) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(59), size: Relative(60) }, output: HeapArray { pointer: Relative(61), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(50), source: Relative(51) }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(13) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, Load { destination: Relative(50), source_pointer: Relative(51) }, Cast { destination: Relative(52), source: Relative(50), bit_size: Integer(U32) }, Cast { destination: Relative(51), source: Relative(52), bit_size: Field }, Cast { destination: Relative(50), source: Relative(51), bit_size: Integer(U32) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Mov { destination: Relative(47), source: Relative(12) }, Jump { location: 16756 }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(52), location: 17002 }, Jump { location: 16759 }, Load { destination: Relative(50), source_pointer: Relative(15) }, Load { destination: Relative(51), source_pointer: Relative(14) }, Load { destination: Relative(52), source_pointer: Relative(50) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16767 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(52) }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(51), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(55), op: Div, bit_size: U32, lhs: Relative(52), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(51) }, JumpIf { condition: Relative(54), location: 16774 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(52), rhs: Relative(40) }, JumpIf { condition: Relative(51), location: 16777 }, Call { location: 18806 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16783 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Load { destination: Relative(50), source_pointer: Relative(43) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 16791 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(50) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Mov { destination: Relative(59), source: Relative(58) }, Store { destination_pointer: Relative(59), source: Relative(49) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, Store { destination_pointer: Relative(50), source: Relative(57) }, Store { destination_pointer: Relative(54), source: Relative(43) }, Store { destination_pointer: Relative(55), source: Relative(3) }, Store { destination_pointer: Relative(56), source: Relative(7) }, Mov { destination: Relative(47), source: Relative(12) }, Jump { location: 16818 }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Direct(32837) }, JumpIf { condition: Relative(51), location: 16972 }, Jump { location: 16821 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(52) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(57) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 16830 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(57) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(59) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(59), size: Relative(60) }, output: HeapArray { pointer: Relative(61), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(50), source: Relative(51) }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(13) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, Load { destination: Relative(50), source_pointer: Relative(51) }, Cast { destination: Relative(52), source: Relative(50), bit_size: Integer(U32) }, Cast { destination: Relative(51), source: Relative(52), bit_size: Field }, Cast { destination: Relative(50), source: Relative(51), bit_size: Integer(U32) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Mov { destination: Relative(47), source: Relative(12) }, Jump { location: 16854 }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(52), location: 16860 }, Jump { location: 16857 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(47) }, Jump { location: 1974 }, Load { destination: Relative(52), source_pointer: Relative(51) }, JumpIf { condition: Relative(52), location: 16969 }, Jump { location: 16863 }, Load { destination: Relative(52), source_pointer: Relative(15) }, Load { destination: Relative(53), source_pointer: Relative(52) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 16870 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(53) }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Relative(47) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(47) }, JumpIf { condition: Relative(55), location: 16880 }, BinaryIntOp { destination: Relative(58), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(47) }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(47) }, JumpIf { condition: Relative(57), location: 16880 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(53) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(47), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 16884 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(55), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(53) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 16889 }, Call { location: 18867 }, Const { destination: Relative(56), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(57), op: Div, bit_size: U32, lhs: Relative(55), rhs: Relative(56) }, BinaryIntOp { destination: Relative(58), op: Mul, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, BinaryIntOp { destination: Relative(53), op: Sub, bit_size: U32, lhs: Relative(55), rhs: Relative(58) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(53), rhs: Relative(16) }, JumpIf { condition: Relative(55), location: 16896 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(53), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Load { destination: Relative(53), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Load { destination: Relative(59), source_pointer: Relative(61) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(7) }, Not { destination: Relative(58), source: Relative(53), bit_size: U1 }, BinaryIntOp { destination: Relative(53), op: Or, bit_size: U1, lhs: Relative(59), rhs: Relative(58) }, JumpIf { condition: Relative(53), location: 16920 }, Jump { location: 16915 }, BinaryFieldOp { destination: Relative(53), op: Equals, lhs: Relative(57), rhs: Relative(49) }, JumpIf { condition: Relative(53), location: 16918 }, Jump { location: 16930 }, Store { destination_pointer: Relative(52), source: Relative(13) }, Jump { location: 16930 }, Store { destination_pointer: Relative(52), source: Relative(13) }, Load { destination: Relative(53), source_pointer: Relative(15) }, Load { destination: Relative(54), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(54), rhs: Relative(57) }, JumpIf { condition: Relative(58), location: 16927 }, Call { location: 18867 }, Store { destination_pointer: Relative(15), source: Relative(53) }, Store { destination_pointer: Relative(14), source: Relative(57) }, Jump { location: 16930 }, Load { destination: Relative(53), source_pointer: Relative(52) }, JumpIf { condition: Relative(53), location: 16933 }, Jump { location: 16969 }, Load { destination: Relative(52), source_pointer: Relative(15) }, Load { destination: Relative(53), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Store { destination_pointer: Relative(58), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(49) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Store { destination_pointer: Relative(57), source: Relative(48) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(52) }, Store { destination_pointer: Relative(57), source: Relative(7) }, Store { destination_pointer: Relative(15), source: Relative(54) }, Store { destination_pointer: Relative(14), source: Relative(53) }, Store { destination_pointer: Relative(51), source: Relative(13) }, Jump { location: 16969 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Relative(47), source: Relative(52) }, Jump { location: 16854 }, Load { destination: Relative(51), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 16976 }, Jump { location: 16999 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(47) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(47) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryFieldOp { destination: Relative(60), op: Add, lhs: Relative(58), rhs: Relative(59) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(47) }, Store { destination_pointer: Relative(61), source: Relative(60) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Store { destination_pointer: Relative(54), source: Relative(58) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(57) }, Jump { location: 16999 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Relative(47), source: Relative(51) }, Jump { location: 16818 }, Load { destination: Relative(52), source_pointer: Relative(51) }, JumpIf { condition: Relative(52), location: 17111 }, Jump { location: 17005 }, Load { destination: Relative(52), source_pointer: Relative(11) }, Load { destination: Relative(53), source_pointer: Relative(52) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 17012 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(53) }, BinaryIntOp { destination: Relative(53), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Relative(47) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(56), rhs: Relative(47) }, JumpIf { condition: Relative(55), location: 17022 }, BinaryIntOp { destination: Relative(58), op: Div, bit_size: U32, lhs: Relative(53), rhs: Relative(47) }, BinaryIntOp { destination: Relative(57), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(47) }, JumpIf { condition: Relative(57), location: 17022 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(53) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(47), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 17026 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(55), rhs: Relative(5) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(53) }, BinaryIntOp { destination: Relative(56), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(55) }, JumpIf { condition: Relative(56), location: 17031 }, Call { location: 18867 }, Const { destination: Relative(56), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(57), op: Div, bit_size: U32, lhs: Relative(55), rhs: Relative(56) }, BinaryIntOp { destination: Relative(58), op: Mul, bit_size: U32, lhs: Relative(57), rhs: Relative(56) }, BinaryIntOp { destination: Relative(53), op: Sub, bit_size: U32, lhs: Relative(55), rhs: Relative(58) }, BinaryIntOp { destination: Relative(55), op: LessThan, bit_size: U32, lhs: Relative(53), rhs: Relative(16) }, JumpIf { condition: Relative(55), location: 17038 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(55), op: Mul, bit_size: U32, lhs: Relative(53), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, Load { destination: Relative(53), source_pointer: Relative(57) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Relative(56) }, Load { destination: Relative(57), source_pointer: Relative(59) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(58) }, Load { destination: Relative(59), source_pointer: Relative(61) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(7) }, Not { destination: Relative(58), source: Relative(53), bit_size: U1 }, BinaryIntOp { destination: Relative(53), op: Or, bit_size: U1, lhs: Relative(59), rhs: Relative(58) }, JumpIf { condition: Relative(53), location: 17062 }, Jump { location: 17057 }, BinaryFieldOp { destination: Relative(53), op: Equals, lhs: Relative(57), rhs: Relative(49) }, JumpIf { condition: Relative(53), location: 17060 }, Jump { location: 17072 }, Store { destination_pointer: Relative(52), source: Relative(13) }, Jump { location: 17072 }, Store { destination_pointer: Relative(52), source: Relative(13) }, Load { destination: Relative(53), source_pointer: Relative(11) }, Load { destination: Relative(54), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(58), op: LessThanEquals, bit_size: U32, lhs: Relative(54), rhs: Relative(57) }, JumpIf { condition: Relative(58), location: 17069 }, Call { location: 18867 }, Store { destination_pointer: Relative(11), source: Relative(53) }, Store { destination_pointer: Relative(10), source: Relative(57) }, Jump { location: 17072 }, Load { destination: Relative(53), source_pointer: Relative(52) }, JumpIf { condition: Relative(53), location: 17075 }, Jump { location: 17111 }, Load { destination: Relative(52), source_pointer: Relative(11) }, Load { destination: Relative(53), source_pointer: Relative(10) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Store { destination_pointer: Relative(58), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(54) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(56) }, Store { destination_pointer: Relative(57), source: Relative(49) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(55), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Store { destination_pointer: Relative(57), source: Relative(48) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(55) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(52) }, Store { destination_pointer: Relative(57), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Relative(54) }, Store { destination_pointer: Relative(10), source: Relative(53) }, Store { destination_pointer: Relative(51), source: Relative(13) }, Jump { location: 17111 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Relative(47), source: Relative(52) }, Jump { location: 16756 }, Load { destination: Relative(51), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 17118 }, Jump { location: 17141 }, Load { destination: Relative(51), source_pointer: Relative(50) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(47) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(47) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryFieldOp { destination: Relative(60), op: Add, lhs: Relative(58), rhs: Relative(59) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(47) }, Store { destination_pointer: Relative(61), source: Relative(60) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Store { destination_pointer: Relative(54), source: Relative(58) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(57) }, Jump { location: 17141 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Relative(47), source: Relative(51) }, Jump { location: 16720 }, BinaryIntOp { destination: Relative(43), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(43) }, Load { destination: Relative(48), source_pointer: Relative(50) }, Load { destination: Relative(43), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(43) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(51), source: Relative(51), bit_size: U1 }, JumpIf { condition: Relative(51), location: 17155 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Load { destination: Relative(51), source_pointer: Relative(43) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Not { destination: Relative(53), source: Relative(53), bit_size: U1 }, JumpIf { condition: Relative(53), location: 17166 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(51) }, Load { destination: Relative(51), source_pointer: Relative(10) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(51) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 17174 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(51) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(54), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(55), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(56), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(58) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Mov { destination: Relative(59), source: Relative(58) }, Store { destination_pointer: Relative(59), source: Relative(48) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(59), rhs: Direct(2) }, Store { destination_pointer: Relative(59), source: Relative(8) }, Store { destination_pointer: Relative(51), source: Relative(57) }, Store { destination_pointer: Relative(54), source: Relative(10) }, Store { destination_pointer: Relative(55), source: Relative(3) }, Store { destination_pointer: Relative(56), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(12) }, Jump { location: 17201 }, BinaryIntOp { destination: Relative(50), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, JumpIf { condition: Relative(50), location: 17325 }, Jump { location: 17204 }, Load { destination: Relative(50), source_pointer: Relative(51) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(52) }, Const { destination: Relative(58), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(59), op: Equals, bit_size: U32, lhs: Relative(58), rhs: Relative(57) }, Not { destination: Relative(59), source: Relative(59), bit_size: U1 }, JumpIf { condition: Relative(59), location: 17213 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, Store { destination_pointer: Relative(52), source: Relative(57) }, Mov { destination: Relative(57), source: Direct(1) }, Const { destination: Relative(59), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(59) }, IndirectConst { destination_pointer: Relative(57), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Const { destination: Relative(60), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(57), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(59), size: Relative(60) }, output: HeapArray { pointer: Relative(61), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(51), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(57) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(13) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(3) }, Load { destination: Relative(50), source_pointer: Relative(51) }, Cast { destination: Relative(52), source: Relative(50), bit_size: Integer(U32) }, Cast { destination: Relative(51), source: Relative(52), bit_size: Field }, Cast { destination: Relative(50), source: Relative(51), bit_size: Integer(U32) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(12) }, Jump { location: 17237 }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, JumpIf { condition: Relative(52), location: 17265 }, Jump { location: 17240 }, Load { destination: Relative(11), source_pointer: Relative(49) }, JumpIf { condition: Relative(11), location: 17262 }, Const { destination: Relative(43), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, Mov { destination: Relative(50), source: Relative(49) }, IndirectConst { destination_pointer: Relative(50), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(51) }, Mov { destination: Direct(32772), source: Relative(50) }, Mov { destination: Direct(32773), source: Relative(52) }, Call { location: 23 }, Const { destination: Relative(51), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(51) }, Store { destination_pointer: Relative(50), source: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Store { destination_pointer: Relative(50), source: Relative(48) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(49), size: Relative(43) } }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 1719 }, Load { destination: Relative(52), source_pointer: Relative(51) }, JumpIf { condition: Relative(52), location: 17322 }, Jump { location: 17268 }, Load { destination: Relative(52), source_pointer: Relative(43) }, Const { destination: Relative(53), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, Not { destination: Relative(54), source: Relative(54), bit_size: U1 }, JumpIf { condition: Relative(54), location: 17274 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(52) }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(11) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(54), op: Equals, bit_size: U32, lhs: Relative(55), rhs: Relative(11) }, JumpIf { condition: Relative(54), location: 17284 }, BinaryIntOp { destination: Relative(57), op: Div, bit_size: U32, lhs: Relative(52), rhs: Relative(11) }, BinaryIntOp { destination: Relative(56), op: Equals, bit_size: U32, lhs: Relative(57), rhs: Relative(11) }, JumpIf { condition: Relative(56), location: 17284 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(52) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 17288 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(54), rhs: Relative(5) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(52) }, BinaryIntOp { destination: Relative(55), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(54) }, JumpIf { condition: Relative(55), location: 17293 }, Call { location: 18867 }, Const { destination: Relative(55), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(56), op: Div, bit_size: U32, lhs: Relative(54), rhs: Relative(55) }, BinaryIntOp { destination: Relative(57), op: Mul, bit_size: U32, lhs: Relative(56), rhs: Relative(55) }, BinaryIntOp { destination: Relative(52), op: Sub, bit_size: U32, lhs: Relative(54), rhs: Relative(57) }, BinaryIntOp { destination: Relative(54), op: LessThan, bit_size: U32, lhs: Relative(52), rhs: Relative(16) }, JumpIf { condition: Relative(54), location: 17300 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(52), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(54) }, Load { destination: Relative(52), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(3) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(56), source_pointer: Relative(58) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(58), op: Add, bit_size: U32, lhs: Relative(57), rhs: Relative(55) }, Load { destination: Relative(54), source_pointer: Relative(58) }, Not { destination: Relative(55), source: Relative(54), bit_size: U1 }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U1, lhs: Relative(55), rhs: Relative(52) }, JumpIf { condition: Relative(54), location: 17316 }, Jump { location: 17322 }, BinaryFieldOp { destination: Relative(52), op: Equals, lhs: Relative(56), rhs: Relative(48) }, JumpIf { condition: Relative(52), location: 17319 }, Jump { location: 17322 }, Store { destination_pointer: Relative(49), source: Relative(13) }, Store { destination_pointer: Relative(51), source: Relative(13) }, Jump { location: 17322 }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, Mov { destination: Relative(11), source: Relative(52) }, Jump { location: 17237 }, Load { destination: Relative(50), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(52), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(50) }, JumpIf { condition: Relative(52), location: 17329 }, Jump { location: 17352 }, Load { destination: Relative(50), source_pointer: Relative(51) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Load { destination: Relative(57), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(11) }, Load { destination: Relative(58), source_pointer: Relative(60) }, BinaryIntOp { destination: Relative(60), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(60), rhs: Relative(11) }, Load { destination: Relative(59), source_pointer: Relative(61) }, BinaryFieldOp { destination: Relative(60), op: Add, lhs: Relative(58), rhs: Relative(59) }, Mov { destination: Direct(32771), source: Relative(52) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(58), source: Direct(32773) }, BinaryIntOp { destination: Relative(59), op: Add, bit_size: U32, lhs: Relative(58), rhs: Direct(2) }, BinaryIntOp { destination: Relative(61), op: Add, bit_size: U32, lhs: Relative(59), rhs: Relative(11) }, Store { destination_pointer: Relative(61), source: Relative(60) }, Store { destination_pointer: Relative(51), source: Relative(50) }, Store { destination_pointer: Relative(54), source: Relative(58) }, Store { destination_pointer: Relative(55), source: Relative(53) }, Store { destination_pointer: Relative(56), source: Relative(57) }, Jump { location: 17352 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, Mov { destination: Relative(11), source: Relative(50) }, Jump { location: 17201 }, BinaryIntOp { destination: Relative(41), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(5) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(41) }, Load { destination: Relative(43), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(3) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(46) }, Load { destination: Relative(41), source_pointer: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(14) }, Load { destination: Relative(47), source_pointer: Relative(15) }, Load { destination: Relative(48), source_pointer: Relative(46) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 17371 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(48) }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(48), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(47) }, JumpIf { condition: Relative(50), location: 17378 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(48), rhs: Relative(40) }, JumpIf { condition: Relative(47), location: 17381 }, Call { location: 18806 }, Load { destination: Relative(47), source_pointer: Relative(46) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(47) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 17387 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(47) }, Load { destination: Relative(46), source_pointer: Relative(10) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(46) }, Not { destination: Relative(50), source: Relative(50), bit_size: U1 }, JumpIf { condition: Relative(50), location: 17395 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(46) }, Mov { destination: Relative(46), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(50), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(51), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(52), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(54) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Mov { destination: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(55), source: Relative(43) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(55), rhs: Direct(2) }, Store { destination_pointer: Relative(55), source: Relative(8) }, Store { destination_pointer: Relative(46), source: Relative(53) }, Store { destination_pointer: Relative(50), source: Relative(10) }, Store { destination_pointer: Relative(51), source: Relative(3) }, Store { destination_pointer: Relative(52), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(12) }, Jump { location: 17422 }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32837) }, JumpIf { condition: Relative(47), location: 17576 }, Jump { location: 17425 }, Load { destination: Relative(47), source_pointer: Relative(46) }, Load { destination: Relative(48), source_pointer: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(51) }, Load { destination: Relative(53), source_pointer: Relative(48) }, Const { destination: Relative(54), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(55), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(53) }, Not { destination: Relative(55), source: Relative(55), bit_size: U1 }, JumpIf { condition: Relative(55), location: 17434 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(53) }, Mov { destination: Relative(53), source: Direct(1) }, Const { destination: Relative(55), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(55) }, IndirectConst { destination_pointer: Relative(53), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, Const { destination: Relative(56), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(53), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(55), size: Relative(56) }, output: HeapArray { pointer: Relative(57), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(46), source: Relative(47) }, Store { destination_pointer: Relative(50), source: Relative(53) }, Store { destination_pointer: Relative(51), source: Relative(49) }, Store { destination_pointer: Relative(52), source: Relative(13) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(3) }, Load { destination: Relative(46), source_pointer: Relative(47) }, Cast { destination: Relative(48), source: Relative(46), bit_size: Integer(U32) }, Cast { destination: Relative(47), source: Relative(48), bit_size: Field }, Cast { destination: Relative(46), source: Relative(47), bit_size: Integer(U32) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(47), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(12) }, Jump { location: 17458 }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, JumpIf { condition: Relative(48), location: 17464 }, Jump { location: 17461 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 1603 }, Load { destination: Relative(48), source_pointer: Relative(47) }, JumpIf { condition: Relative(48), location: 17573 }, Jump { location: 17467 }, Load { destination: Relative(48), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(48) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(51), source: Relative(51), bit_size: U1 }, JumpIf { condition: Relative(51), location: 17474 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(49) }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(11) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(11) }, JumpIf { condition: Relative(51), location: 17484 }, BinaryIntOp { destination: Relative(54), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(11) }, BinaryIntOp { destination: Relative(53), op: Equals, bit_size: U32, lhs: Relative(54), rhs: Relative(11) }, JumpIf { condition: Relative(53), location: 17484 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(49) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 17488 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(51), rhs: Relative(5) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(49) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(46), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 17493 }, Call { location: 18867 }, Const { destination: Relative(52), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(53), op: Div, bit_size: U32, lhs: Relative(51), rhs: Relative(52) }, BinaryIntOp { destination: Relative(54), op: Mul, bit_size: U32, lhs: Relative(53), rhs: Relative(52) }, BinaryIntOp { destination: Relative(49), op: Sub, bit_size: U32, lhs: Relative(51), rhs: Relative(54) }, BinaryIntOp { destination: Relative(51), op: LessThan, bit_size: U32, lhs: Relative(49), rhs: Relative(16) }, JumpIf { condition: Relative(51), location: 17500 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(51) }, Load { destination: Relative(49), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(54) }, Load { destination: Relative(55), source_pointer: Relative(57) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(48), source: Relative(7) }, Not { destination: Relative(54), source: Relative(49), bit_size: U1 }, BinaryIntOp { destination: Relative(49), op: Or, bit_size: U1, lhs: Relative(55), rhs: Relative(54) }, JumpIf { condition: Relative(49), location: 17524 }, Jump { location: 17519 }, BinaryFieldOp { destination: Relative(49), op: Equals, lhs: Relative(53), rhs: Relative(43) }, JumpIf { condition: Relative(49), location: 17522 }, Jump { location: 17534 }, Store { destination_pointer: Relative(48), source: Relative(13) }, Jump { location: 17534 }, Store { destination_pointer: Relative(48), source: Relative(13) }, Load { destination: Relative(49), source_pointer: Relative(14) }, Load { destination: Relative(50), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, BinaryIntOp { destination: Relative(54), op: LessThanEquals, bit_size: U32, lhs: Relative(50), rhs: Relative(53) }, JumpIf { condition: Relative(54), location: 17531 }, Call { location: 18867 }, Store { destination_pointer: Relative(14), source: Relative(49) }, Store { destination_pointer: Relative(15), source: Relative(53) }, Jump { location: 17534 }, Load { destination: Relative(49), source_pointer: Relative(48) }, JumpIf { condition: Relative(49), location: 17537 }, Jump { location: 17573 }, Load { destination: Relative(48), source_pointer: Relative(14) }, Load { destination: Relative(49), source_pointer: Relative(15) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(51) }, Store { destination_pointer: Relative(54), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(50) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(48), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(52) }, Store { destination_pointer: Relative(53), source: Relative(43) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(51), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Store { destination_pointer: Relative(53), source: Relative(41) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(51) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(48) }, Store { destination_pointer: Relative(53), source: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(50) }, Store { destination_pointer: Relative(15), source: Relative(49) }, Store { destination_pointer: Relative(47), source: Relative(13) }, Jump { location: 17573 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, Mov { destination: Relative(11), source: Relative(48) }, Jump { location: 17458 }, Load { destination: Relative(47), source_pointer: Relative(51) }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(47) }, JumpIf { condition: Relative(48), location: 17580 }, Jump { location: 17603 }, Load { destination: Relative(47), source_pointer: Relative(46) }, Load { destination: Relative(48), source_pointer: Relative(50) }, Load { destination: Relative(49), source_pointer: Relative(51) }, Load { destination: Relative(53), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(11) }, Load { destination: Relative(54), source_pointer: Relative(56) }, BinaryIntOp { destination: Relative(56), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(56), rhs: Relative(11) }, Load { destination: Relative(55), source_pointer: Relative(57) }, BinaryFieldOp { destination: Relative(56), op: Add, lhs: Relative(54), rhs: Relative(55) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(54), source: Direct(32773) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Direct(2) }, BinaryIntOp { destination: Relative(57), op: Add, bit_size: U32, lhs: Relative(55), rhs: Relative(11) }, Store { destination_pointer: Relative(57), source: Relative(56) }, Store { destination_pointer: Relative(46), source: Relative(47) }, Store { destination_pointer: Relative(50), source: Relative(54) }, Store { destination_pointer: Relative(51), source: Relative(49) }, Store { destination_pointer: Relative(52), source: Relative(53) }, Jump { location: 17603 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(3) }, Mov { destination: Relative(11), source: Relative(47) }, Jump { location: 17422 }, Load { destination: Relative(46), source_pointer: Relative(42) }, JumpIf { condition: Relative(46), location: 17668 }, Jump { location: 17609 }, Load { destination: Relative(46), source_pointer: Relative(11) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(46) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 17615 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(46) }, BinaryIntOp { destination: Relative(46), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(2) }, JumpIf { condition: Relative(48), location: 17625 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(2) }, JumpIf { condition: Relative(50), location: 17625 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 17629 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(46), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(5) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(41), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 17634 }, Call { location: 18867 }, Const { destination: Relative(49), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(49) }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, BinaryIntOp { destination: Relative(46), op: Sub, bit_size: U32, lhs: Relative(48), rhs: Relative(51) }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(46), rhs: Relative(16) }, JumpIf { condition: Relative(48), location: 17641 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(46), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(5) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Load { destination: Relative(48), source_pointer: Relative(53) }, Not { destination: Relative(49), source: Relative(48), bit_size: U1 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U1, lhs: Relative(49), rhs: Relative(46) }, JumpIf { condition: Relative(48), location: 17661 }, Jump { location: 17668 }, BinaryFieldOp { destination: Relative(46), op: Equals, lhs: Relative(50), rhs: Relative(10) }, JumpIf { condition: Relative(46), location: 17664 }, Jump { location: 17668 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(39), source: Relative(51) }, Store { destination_pointer: Relative(42), source: Relative(13) }, Jump { location: 17668 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(46) }, Jump { location: 1376 }, Load { destination: Relative(41), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(41) }, JumpIf { condition: Relative(42), location: 17675 }, Jump { location: 17698 }, Load { destination: Relative(41), source_pointer: Relative(47) }, Load { destination: Relative(42), source_pointer: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(2) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Add, lhs: Relative(52), rhs: Relative(53) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Store { destination_pointer: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(47), source: Relative(41) }, Store { destination_pointer: Relative(48), source: Relative(52) }, Store { destination_pointer: Relative(49), source: Relative(46) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Jump { location: 17698 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(41) }, Jump { location: 1340 }, Load { destination: Relative(42), source_pointer: Relative(15) }, JumpIf { condition: Relative(42), location: 17810 }, Jump { location: 17704 }, Load { destination: Relative(42), source_pointer: Relative(39) }, Load { destination: Relative(46), source_pointer: Relative(42) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(46) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 17711 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(46) }, BinaryIntOp { destination: Relative(46), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(2) }, JumpIf { condition: Relative(48), location: 17721 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(2) }, JumpIf { condition: Relative(50), location: 17721 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 17725 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(46), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(5) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 17730 }, Call { location: 18867 }, Const { destination: Relative(49), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(49) }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, BinaryIntOp { destination: Relative(46), op: Sub, bit_size: U32, lhs: Relative(48), rhs: Relative(51) }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(46), rhs: Relative(16) }, JumpIf { condition: Relative(48), location: 17737 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(46), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(51) }, Load { destination: Relative(52), source_pointer: Relative(54) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(7) }, Not { destination: Relative(51), source: Relative(46), bit_size: U1 }, BinaryIntOp { destination: Relative(46), op: Or, bit_size: U1, lhs: Relative(52), rhs: Relative(51) }, JumpIf { condition: Relative(46), location: 17761 }, Jump { location: 17756 }, BinaryFieldOp { destination: Relative(46), op: Equals, lhs: Relative(50), rhs: Relative(10) }, JumpIf { condition: Relative(46), location: 17759 }, Jump { location: 17771 }, Store { destination_pointer: Relative(42), source: Relative(13) }, Jump { location: 17771 }, Store { destination_pointer: Relative(42), source: Relative(13) }, Load { destination: Relative(46), source_pointer: Relative(39) }, Load { destination: Relative(47), source_pointer: Relative(41) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, BinaryIntOp { destination: Relative(51), op: LessThanEquals, bit_size: U32, lhs: Relative(47), rhs: Relative(50) }, JumpIf { condition: Relative(51), location: 17768 }, Call { location: 18867 }, Store { destination_pointer: Relative(39), source: Relative(46) }, Store { destination_pointer: Relative(41), source: Relative(50) }, Jump { location: 17771 }, Load { destination: Relative(46), source_pointer: Relative(42) }, JumpIf { condition: Relative(46), location: 17774 }, Jump { location: 17810 }, Load { destination: Relative(42), source_pointer: Relative(39) }, Load { destination: Relative(46), source_pointer: Relative(41) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Store { destination_pointer: Relative(51), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(49) }, Store { destination_pointer: Relative(50), source: Relative(10) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(48), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(47) }, Store { destination_pointer: Relative(50), source: Relative(14) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(42) }, Store { destination_pointer: Relative(50), source: Relative(7) }, Store { destination_pointer: Relative(39), source: Relative(47) }, Store { destination_pointer: Relative(41), source: Relative(46) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 17810 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(42) }, Jump { location: 1272 }, Load { destination: Relative(11), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, JumpIf { condition: Relative(42), location: 17817 }, Jump { location: 17840 }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(42), source_pointer: Relative(47) }, Load { destination: Relative(46), source_pointer: Relative(48) }, Load { destination: Relative(50), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(2) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryFieldOp { destination: Relative(53), op: Add, lhs: Relative(51), rhs: Relative(52) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(51), source: Direct(32773) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(2) }, Store { destination_pointer: Relative(54), source: Relative(53) }, Store { destination_pointer: Relative(15), source: Relative(11) }, Store { destination_pointer: Relative(47), source: Relative(51) }, Store { destination_pointer: Relative(48), source: Relative(46) }, Store { destination_pointer: Relative(49), source: Relative(50) }, Jump { location: 17840 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 1236 }, Load { destination: Relative(46), source_pointer: Relative(42) }, JumpIf { condition: Relative(46), location: 17952 }, Jump { location: 17846 }, Load { destination: Relative(46), source_pointer: Relative(39) }, Load { destination: Relative(47), source_pointer: Relative(46) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(47) }, Not { destination: Relative(49), source: Relative(49), bit_size: U1 }, JumpIf { condition: Relative(49), location: 17853 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(2) }, JumpIf { condition: Relative(49), location: 17863 }, BinaryIntOp { destination: Relative(52), op: Div, bit_size: U32, lhs: Relative(47), rhs: Relative(2) }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(52), rhs: Relative(2) }, JumpIf { condition: Relative(51), location: 17863 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(47) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 17867 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(47), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(5) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(47) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(15), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 17872 }, Call { location: 18867 }, Const { destination: Relative(50), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, BinaryIntOp { destination: Relative(52), op: Mul, bit_size: U32, lhs: Relative(51), rhs: Relative(50) }, BinaryIntOp { destination: Relative(47), op: Sub, bit_size: U32, lhs: Relative(49), rhs: Relative(52) }, BinaryIntOp { destination: Relative(49), op: LessThan, bit_size: U32, lhs: Relative(47), rhs: Relative(16) }, JumpIf { condition: Relative(49), location: 17879 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(49), op: Mul, bit_size: U32, lhs: Relative(47), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Load { destination: Relative(47), source_pointer: Relative(51) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(52) }, Load { destination: Relative(53), source_pointer: Relative(55) }, Mov { destination: Relative(46), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(46), source: Relative(7) }, Not { destination: Relative(52), source: Relative(47), bit_size: U1 }, BinaryIntOp { destination: Relative(47), op: Or, bit_size: U1, lhs: Relative(53), rhs: Relative(52) }, JumpIf { condition: Relative(47), location: 17903 }, Jump { location: 17898 }, BinaryFieldOp { destination: Relative(47), op: Equals, lhs: Relative(51), rhs: Relative(10) }, JumpIf { condition: Relative(47), location: 17901 }, Jump { location: 17913 }, Store { destination_pointer: Relative(46), source: Relative(13) }, Jump { location: 17913 }, Store { destination_pointer: Relative(46), source: Relative(13) }, Load { destination: Relative(47), source_pointer: Relative(39) }, Load { destination: Relative(48), source_pointer: Relative(41) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, BinaryIntOp { destination: Relative(52), op: LessThanEquals, bit_size: U32, lhs: Relative(48), rhs: Relative(51) }, JumpIf { condition: Relative(52), location: 17910 }, Call { location: 18867 }, Store { destination_pointer: Relative(39), source: Relative(47) }, Store { destination_pointer: Relative(41), source: Relative(51) }, Jump { location: 17913 }, Load { destination: Relative(47), source_pointer: Relative(46) }, JumpIf { condition: Relative(47), location: 17916 }, Jump { location: 17952 }, Load { destination: Relative(46), source_pointer: Relative(39) }, Load { destination: Relative(47), source_pointer: Relative(41) }, Mov { destination: Direct(32771), source: Relative(46) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(48), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(49) }, Store { destination_pointer: Relative(52), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(48) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(46), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(50) }, Store { destination_pointer: Relative(51), source: Relative(10) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(46) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(49), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Store { destination_pointer: Relative(51), source: Relative(11) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(49) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(48), source: Direct(32773) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(46) }, Store { destination_pointer: Relative(51), source: Relative(7) }, Store { destination_pointer: Relative(39), source: Relative(48) }, Store { destination_pointer: Relative(41), source: Relative(47) }, Store { destination_pointer: Relative(42), source: Relative(13) }, Jump { location: 17952 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(46) }, Jump { location: 1169 }, Load { destination: Relative(15), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(46), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, JumpIf { condition: Relative(46), location: 17959 }, Jump { location: 17982 }, Load { destination: Relative(15), source_pointer: Relative(42) }, Load { destination: Relative(46), source_pointer: Relative(47) }, Load { destination: Relative(50), source_pointer: Relative(48) }, Load { destination: Relative(51), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(2) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Add, lhs: Relative(52), rhs: Relative(53) }, Mov { destination: Direct(32771), source: Relative(46) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Store { destination_pointer: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(42), source: Relative(15) }, Store { destination_pointer: Relative(47), source: Relative(52) }, Store { destination_pointer: Relative(48), source: Relative(50) }, Store { destination_pointer: Relative(49), source: Relative(51) }, Jump { location: 17982 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 1133 }, Load { destination: Relative(46), source_pointer: Relative(42) }, JumpIf { condition: Relative(46), location: 18047 }, Jump { location: 17988 }, Load { destination: Relative(46), source_pointer: Relative(11) }, Const { destination: Relative(47), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(46) }, Not { destination: Relative(48), source: Relative(48), bit_size: U1 }, JumpIf { condition: Relative(48), location: 17994 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(46) }, BinaryIntOp { destination: Relative(46), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(49), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(48), op: Equals, bit_size: U32, lhs: Relative(49), rhs: Relative(2) }, JumpIf { condition: Relative(48), location: 18004 }, BinaryIntOp { destination: Relative(51), op: Div, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, BinaryIntOp { destination: Relative(50), op: Equals, bit_size: U32, lhs: Relative(51), rhs: Relative(2) }, JumpIf { condition: Relative(50), location: 18004 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 18008 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(46), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(5) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(46) }, BinaryIntOp { destination: Relative(49), op: LessThanEquals, bit_size: U32, lhs: Relative(41), rhs: Relative(48) }, JumpIf { condition: Relative(49), location: 18013 }, Call { location: 18867 }, Const { destination: Relative(49), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(48), rhs: Relative(49) }, BinaryIntOp { destination: Relative(51), op: Mul, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, BinaryIntOp { destination: Relative(46), op: Sub, bit_size: U32, lhs: Relative(48), rhs: Relative(51) }, BinaryIntOp { destination: Relative(48), op: LessThan, bit_size: U32, lhs: Relative(46), rhs: Relative(16) }, JumpIf { condition: Relative(48), location: 18020 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U32, lhs: Relative(46), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(49) }, Load { destination: Relative(50), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(5) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(49) }, Load { destination: Relative(48), source_pointer: Relative(53) }, Not { destination: Relative(49), source: Relative(48), bit_size: U1 }, BinaryIntOp { destination: Relative(48), op: Mul, bit_size: U1, lhs: Relative(49), rhs: Relative(46) }, JumpIf { condition: Relative(48), location: 18040 }, Jump { location: 18047 }, BinaryFieldOp { destination: Relative(46), op: Equals, lhs: Relative(50), rhs: Relative(6) }, JumpIf { condition: Relative(46), location: 18043 }, Jump { location: 18047 }, Store { destination_pointer: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(15), source: Relative(51) }, Store { destination_pointer: Relative(42), source: Relative(13) }, Jump { location: 18047 }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(46) }, Jump { location: 974 }, Load { destination: Relative(41), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(41) }, JumpIf { condition: Relative(42), location: 18054 }, Jump { location: 18077 }, Load { destination: Relative(41), source_pointer: Relative(47) }, Load { destination: Relative(42), source_pointer: Relative(48) }, Load { destination: Relative(46), source_pointer: Relative(49) }, Load { destination: Relative(51), source_pointer: Relative(50) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Load { destination: Relative(52), source_pointer: Relative(54) }, BinaryIntOp { destination: Relative(54), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(54), rhs: Relative(2) }, Load { destination: Relative(53), source_pointer: Relative(55) }, BinaryFieldOp { destination: Relative(54), op: Add, lhs: Relative(52), rhs: Relative(53) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(52), source: Direct(32773) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Direct(2) }, BinaryIntOp { destination: Relative(55), op: Add, bit_size: U32, lhs: Relative(53), rhs: Relative(2) }, Store { destination_pointer: Relative(55), source: Relative(54) }, Store { destination_pointer: Relative(47), source: Relative(41) }, Store { destination_pointer: Relative(48), source: Relative(52) }, Store { destination_pointer: Relative(49), source: Relative(46) }, Store { destination_pointer: Relative(50), source: Relative(51) }, Jump { location: 18077 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(41) }, Jump { location: 938 }, Load { destination: Relative(42), source_pointer: Relative(14) }, Load { destination: Relative(43), source_pointer: Relative(15) }, Load { destination: Relative(44), source_pointer: Relative(42) }, Const { destination: Relative(45), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(45), rhs: Relative(44) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 18088 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(44) }, BinaryIntOp { destination: Relative(44), op: Mul, bit_size: U32, lhs: Relative(43), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(47), op: Div, bit_size: U32, lhs: Relative(44), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(47), rhs: Relative(43) }, JumpIf { condition: Relative(46), location: 18095 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(44), rhs: Relative(40) }, JumpIf { condition: Relative(43), location: 18098 }, Call { location: 18806 }, Load { destination: Relative(43), source_pointer: Relative(42) }, Const { destination: Relative(44), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(44), rhs: Relative(43) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 18104 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, Store { destination_pointer: Relative(42), source: Relative(43) }, Load { destination: Relative(42), source_pointer: Relative(11) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(46), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(42) }, Not { destination: Relative(46), source: Relative(46), bit_size: U1 }, JumpIf { condition: Relative(46), location: 18112 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(42) }, Mov { destination: Relative(42), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(46), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(47), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(48), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(50) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Mov { destination: Relative(51), source: Relative(50) }, Store { destination_pointer: Relative(51), source: Relative(6) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(8) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(51), rhs: Direct(2) }, Store { destination_pointer: Relative(51), source: Relative(8) }, Store { destination_pointer: Relative(42), source: Relative(49) }, Store { destination_pointer: Relative(46), source: Relative(11) }, Store { destination_pointer: Relative(47), source: Relative(3) }, Store { destination_pointer: Relative(48), source: Relative(7) }, Mov { destination: Relative(41), source: Relative(12) }, Jump { location: 18139 }, BinaryIntOp { destination: Relative(43), op: LessThan, bit_size: U32, lhs: Relative(41), rhs: Direct(32837) }, JumpIf { condition: Relative(43), location: 18293 }, Jump { location: 18142 }, Load { destination: Relative(43), source_pointer: Relative(42) }, Load { destination: Relative(44), source_pointer: Relative(46) }, Load { destination: Relative(45), source_pointer: Relative(47) }, Load { destination: Relative(49), source_pointer: Relative(44) }, Const { destination: Relative(50), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(51), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(49) }, Not { destination: Relative(51), source: Relative(51), bit_size: U1 }, JumpIf { condition: Relative(51), location: 18151 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, Store { destination_pointer: Relative(44), source: Relative(49) }, Mov { destination: Relative(49), source: Direct(1) }, Const { destination: Relative(51), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(51) }, IndirectConst { destination_pointer: Relative(49), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, Const { destination: Relative(52), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(49), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(51), size: Relative(52) }, output: HeapArray { pointer: Relative(53), size: 4 }, len: Direct(32836) }), Store { destination_pointer: Relative(42), source: Relative(43) }, Store { destination_pointer: Relative(46), source: Relative(49) }, Store { destination_pointer: Relative(47), source: Relative(45) }, Store { destination_pointer: Relative(48), source: Relative(13) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(3) }, Load { destination: Relative(42), source_pointer: Relative(43) }, Cast { destination: Relative(44), source: Relative(42), bit_size: Integer(U32) }, Cast { destination: Relative(43), source: Relative(44), bit_size: Field }, Cast { destination: Relative(42), source: Relative(43), bit_size: Integer(U32) }, Mov { destination: Relative(43), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(43), source: Relative(7) }, Mov { destination: Relative(41), source: Relative(12) }, Jump { location: 18175 }, BinaryIntOp { destination: Relative(44), op: LessThan, bit_size: U32, lhs: Relative(41), rhs: Relative(16) }, JumpIf { condition: Relative(44), location: 18181 }, Jump { location: 18178 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(41) }, Jump { location: 769 }, Load { destination: Relative(44), source_pointer: Relative(43) }, JumpIf { condition: Relative(44), location: 18290 }, Jump { location: 18184 }, Load { destination: Relative(44), source_pointer: Relative(14) }, Load { destination: Relative(45), source_pointer: Relative(44) }, Const { destination: Relative(46), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(46), rhs: Relative(45) }, Not { destination: Relative(47), source: Relative(47), bit_size: U1 }, JumpIf { condition: Relative(47), location: 18191 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, Store { destination_pointer: Relative(44), source: Relative(45) }, BinaryIntOp { destination: Relative(45), op: Mul, bit_size: U32, lhs: Relative(41), rhs: Relative(41) }, Const { destination: Relative(48), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(47), op: Equals, bit_size: U32, lhs: Relative(48), rhs: Relative(41) }, JumpIf { condition: Relative(47), location: 18201 }, BinaryIntOp { destination: Relative(50), op: Div, bit_size: U32, lhs: Relative(45), rhs: Relative(41) }, BinaryIntOp { destination: Relative(49), op: Equals, bit_size: U32, lhs: Relative(50), rhs: Relative(41) }, JumpIf { condition: Relative(49), location: 18201 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(45) }, BinaryIntOp { destination: Relative(48), op: LessThanEquals, bit_size: U32, lhs: Relative(41), rhs: Relative(47) }, JumpIf { condition: Relative(48), location: 18205 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(45), op: Div, bit_size: U32, lhs: Relative(47), rhs: Relative(5) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(45) }, BinaryIntOp { destination: Relative(48), op: LessThanEquals, bit_size: U32, lhs: Relative(42), rhs: Relative(47) }, JumpIf { condition: Relative(48), location: 18210 }, Call { location: 18867 }, Const { destination: Relative(48), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(49), op: Div, bit_size: U32, lhs: Relative(47), rhs: Relative(48) }, BinaryIntOp { destination: Relative(50), op: Mul, bit_size: U32, lhs: Relative(49), rhs: Relative(48) }, BinaryIntOp { destination: Relative(45), op: Sub, bit_size: U32, lhs: Relative(47), rhs: Relative(50) }, BinaryIntOp { destination: Relative(47), op: LessThan, bit_size: U32, lhs: Relative(45), rhs: Relative(16) }, JumpIf { condition: Relative(47), location: 18217 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(47), op: Mul, bit_size: U32, lhs: Relative(45), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(47) }, Load { destination: Relative(45), source_pointer: Relative(49) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Relative(48) }, Load { destination: Relative(49), source_pointer: Relative(51) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(50) }, Load { destination: Relative(51), source_pointer: Relative(53) }, Mov { destination: Relative(44), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(44), source: Relative(7) }, Not { destination: Relative(50), source: Relative(45), bit_size: U1 }, BinaryIntOp { destination: Relative(45), op: Or, bit_size: U1, lhs: Relative(51), rhs: Relative(50) }, JumpIf { condition: Relative(45), location: 18241 }, Jump { location: 18236 }, BinaryFieldOp { destination: Relative(45), op: Equals, lhs: Relative(49), rhs: Relative(6) }, JumpIf { condition: Relative(45), location: 18239 }, Jump { location: 18251 }, Store { destination_pointer: Relative(44), source: Relative(13) }, Jump { location: 18251 }, Store { destination_pointer: Relative(44), source: Relative(13) }, Load { destination: Relative(45), source_pointer: Relative(14) }, Load { destination: Relative(46), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(3) }, BinaryIntOp { destination: Relative(50), op: LessThanEquals, bit_size: U32, lhs: Relative(46), rhs: Relative(49) }, JumpIf { condition: Relative(50), location: 18248 }, Call { location: 18867 }, Store { destination_pointer: Relative(14), source: Relative(45) }, Store { destination_pointer: Relative(15), source: Relative(49) }, Jump { location: 18251 }, Load { destination: Relative(45), source_pointer: Relative(44) }, JumpIf { condition: Relative(45), location: 18254 }, Jump { location: 18290 }, Load { destination: Relative(44), source_pointer: Relative(14) }, Load { destination: Relative(45), source_pointer: Relative(15) }, Mov { destination: Direct(32771), source: Relative(44) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(46), source: Direct(32773) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(50), op: Add, bit_size: U32, lhs: Relative(49), rhs: Relative(47) }, Store { destination_pointer: Relative(50), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(46) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(44), source: Direct(32773) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(48) }, Store { destination_pointer: Relative(49), source: Relative(6) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(44) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(47), source: Direct(32773) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(46) }, Store { destination_pointer: Relative(49), source: Relative(10) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(47) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(46), source: Direct(32773) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(46), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(44) }, Store { destination_pointer: Relative(49), source: Relative(7) }, Store { destination_pointer: Relative(14), source: Relative(46) }, Store { destination_pointer: Relative(15), source: Relative(45) }, Store { destination_pointer: Relative(43), source: Relative(13) }, Jump { location: 18290 }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(3) }, Mov { destination: Relative(41), source: Relative(44) }, Jump { location: 18175 }, Load { destination: Relative(43), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(44), op: LessThan, bit_size: U32, lhs: Relative(41), rhs: Relative(43) }, JumpIf { condition: Relative(44), location: 18297 }, Jump { location: 18320 }, Load { destination: Relative(43), source_pointer: Relative(42) }, Load { destination: Relative(44), source_pointer: Relative(46) }, Load { destination: Relative(45), source_pointer: Relative(47) }, Load { destination: Relative(49), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(44), rhs: Direct(2) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(41) }, Load { destination: Relative(50), source_pointer: Relative(52) }, BinaryIntOp { destination: Relative(52), op: Add, bit_size: U32, lhs: Relative(43), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(52), rhs: Relative(41) }, Load { destination: Relative(51), source_pointer: Relative(53) }, BinaryFieldOp { destination: Relative(52), op: Add, lhs: Relative(50), rhs: Relative(51) }, Mov { destination: Direct(32771), source: Relative(44) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(50), source: Direct(32773) }, BinaryIntOp { destination: Relative(51), op: Add, bit_size: U32, lhs: Relative(50), rhs: Direct(2) }, BinaryIntOp { destination: Relative(53), op: Add, bit_size: U32, lhs: Relative(51), rhs: Relative(41) }, Store { destination_pointer: Relative(53), source: Relative(52) }, Store { destination_pointer: Relative(42), source: Relative(43) }, Store { destination_pointer: Relative(46), source: Relative(50) }, Store { destination_pointer: Relative(47), source: Relative(45) }, Store { destination_pointer: Relative(48), source: Relative(49) }, Jump { location: 18320 }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(3) }, Mov { destination: Relative(41), source: Relative(43) }, Jump { location: 18139 }, Load { destination: Relative(15), source_pointer: Relative(14) }, JumpIf { condition: Relative(15), location: 18380 }, Jump { location: 18326 }, Load { destination: Relative(15), source_pointer: Relative(6) }, Const { destination: Relative(40), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(41), op: Equals, bit_size: U32, lhs: Relative(40), rhs: Relative(15) }, Not { destination: Relative(41), source: Relative(41), bit_size: U1 }, JumpIf { condition: Relative(41), location: 18332 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(42), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(41), op: Equals, bit_size: U32, lhs: Relative(42), rhs: Relative(2) }, JumpIf { condition: Relative(41), location: 18342 }, BinaryIntOp { destination: Relative(44), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(43), op: Equals, bit_size: U32, lhs: Relative(44), rhs: Relative(2) }, JumpIf { condition: Relative(43), location: 18342 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(41) }, JumpIf { condition: Relative(42), location: 18346 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(41), rhs: Relative(5) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(41) }, JumpIf { condition: Relative(42), location: 18351 }, Call { location: 18867 }, Const { destination: Relative(42), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(43), op: Div, bit_size: U32, lhs: Relative(41), rhs: Relative(42) }, BinaryIntOp { destination: Relative(44), op: Mul, bit_size: U32, lhs: Relative(43), rhs: Relative(42) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(41), rhs: Relative(44) }, BinaryIntOp { destination: Relative(41), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(16) }, JumpIf { condition: Relative(41), location: 18358 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(41), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(41) }, Load { destination: Relative(15), source_pointer: Relative(43) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(41), rhs: Relative(3) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(42) }, Load { destination: Relative(43), source_pointer: Relative(45) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(41), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(44), rhs: Relative(42) }, Load { destination: Relative(41), source_pointer: Relative(45) }, Not { destination: Relative(42), source: Relative(41), bit_size: U1 }, BinaryIntOp { destination: Relative(41), op: Mul, bit_size: U1, lhs: Relative(42), rhs: Relative(15) }, JumpIf { condition: Relative(41), location: 18374 }, Jump { location: 18380 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(43), rhs: Relative(4) }, JumpIf { condition: Relative(15), location: 18377 }, Jump { location: 18380 }, Store { destination_pointer: Relative(10), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Jump { location: 18380 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 659 }, Load { destination: Relative(11), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, JumpIf { condition: Relative(14), location: 18387 }, Jump { location: 18410 }, Load { destination: Relative(11), source_pointer: Relative(40) }, Load { destination: Relative(14), source_pointer: Relative(41) }, Load { destination: Relative(15), source_pointer: Relative(42) }, Load { destination: Relative(44), source_pointer: Relative(43) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, Load { destination: Relative(45), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(2) }, Load { destination: Relative(46), source_pointer: Relative(48) }, BinaryFieldOp { destination: Relative(47), op: Add, lhs: Relative(45), rhs: Relative(46) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(45), source: Direct(32773) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, Store { destination_pointer: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(40), source: Relative(11) }, Store { destination_pointer: Relative(41), source: Relative(45) }, Store { destination_pointer: Relative(42), source: Relative(15) }, Store { destination_pointer: Relative(43), source: Relative(44) }, Jump { location: 18410 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 623 }, Load { destination: Relative(15), source_pointer: Relative(14) }, JumpIf { condition: Relative(15), location: 18512 }, Jump { location: 18416 }, Load { destination: Relative(15), source_pointer: Relative(10) }, Load { destination: Relative(40), source_pointer: Relative(15) }, Const { destination: Relative(41), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(41), rhs: Relative(40) }, Not { destination: Relative(42), source: Relative(42), bit_size: U1 }, JumpIf { condition: Relative(42), location: 18423 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(40) }, BinaryIntOp { destination: Relative(40), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(43), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(42), op: Equals, bit_size: U32, lhs: Relative(43), rhs: Relative(2) }, JumpIf { condition: Relative(42), location: 18433 }, BinaryIntOp { destination: Relative(45), op: Div, bit_size: U32, lhs: Relative(40), rhs: Relative(2) }, BinaryIntOp { destination: Relative(44), op: Equals, bit_size: U32, lhs: Relative(45), rhs: Relative(2) }, JumpIf { condition: Relative(44), location: 18433 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(40) }, BinaryIntOp { destination: Relative(43), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(42) }, JumpIf { condition: Relative(43), location: 18437 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(40), op: Div, bit_size: U32, lhs: Relative(42), rhs: Relative(5) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(40) }, BinaryIntOp { destination: Relative(43), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(42) }, JumpIf { condition: Relative(43), location: 18442 }, Call { location: 18867 }, Const { destination: Relative(43), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(44), op: Div, bit_size: U32, lhs: Relative(42), rhs: Relative(43) }, BinaryIntOp { destination: Relative(45), op: Mul, bit_size: U32, lhs: Relative(44), rhs: Relative(43) }, BinaryIntOp { destination: Relative(40), op: Sub, bit_size: U32, lhs: Relative(42), rhs: Relative(45) }, BinaryIntOp { destination: Relative(42), op: LessThan, bit_size: U32, lhs: Relative(40), rhs: Relative(16) }, JumpIf { condition: Relative(42), location: 18449 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(42), op: Mul, bit_size: U32, lhs: Relative(40), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(42) }, Load { destination: Relative(40), source_pointer: Relative(44) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(3) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Relative(43) }, Load { destination: Relative(44), source_pointer: Relative(46) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(5) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(45) }, Load { destination: Relative(46), source_pointer: Relative(48) }, BinaryIntOp { destination: Relative(45), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(49), op: Add, bit_size: U32, lhs: Relative(48), rhs: Relative(45) }, Load { destination: Relative(47), source_pointer: Relative(49) }, Not { destination: Relative(15), source: Relative(47), bit_size: U1 }, BinaryIntOp { destination: Relative(45), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(40) }, JumpIf { condition: Relative(45), location: 18469 }, Jump { location: 18512 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(44), rhs: Relative(4) }, JumpIf { condition: Relative(15), location: 18472 }, Jump { location: 18512 }, Load { destination: Relative(15), source_pointer: Relative(10) }, Load { destination: Relative(41), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(45), source: Direct(32773) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(42) }, Store { destination_pointer: Relative(48), source: Relative(40) }, Mov { destination: Direct(32771), source: Relative(45) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(43) }, Store { destination_pointer: Relative(42), source: Relative(44) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(40) }, Store { destination_pointer: Relative(44), source: Relative(46) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(40), source: Direct(32773) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(40), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(15) }, Store { destination_pointer: Relative(44), source: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(41), rhs: Relative(3) }, BinaryIntOp { destination: Relative(42), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(41) }, JumpIf { condition: Relative(42), location: 18508 }, Call { location: 18951 }, Store { destination_pointer: Relative(10), source: Relative(40) }, Store { destination_pointer: Relative(11), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Jump { location: 18512 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 558 }, Load { destination: Relative(6), source_pointer: Relative(41) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 18519 }, Jump { location: 18542 }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(40) }, Load { destination: Relative(43), source_pointer: Relative(41) }, Load { destination: Relative(44), source_pointer: Relative(42) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, Load { destination: Relative(45), source_pointer: Relative(47) }, BinaryIntOp { destination: Relative(47), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(47), rhs: Relative(2) }, Load { destination: Relative(46), source_pointer: Relative(48) }, BinaryFieldOp { destination: Relative(47), op: Add, lhs: Relative(45), rhs: Relative(46) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(45), source: Direct(32773) }, BinaryIntOp { destination: Relative(46), op: Add, bit_size: U32, lhs: Relative(45), rhs: Direct(2) }, BinaryIntOp { destination: Relative(48), op: Add, bit_size: U32, lhs: Relative(46), rhs: Relative(2) }, Store { destination_pointer: Relative(48), source: Relative(47) }, Store { destination_pointer: Relative(14), source: Relative(6) }, Store { destination_pointer: Relative(40), source: Relative(45) }, Store { destination_pointer: Relative(41), source: Relative(43) }, Store { destination_pointer: Relative(42), source: Relative(44) }, Jump { location: 18542 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 522 }, Load { destination: Relative(20), source_pointer: Relative(18) }, JumpIf { condition: Relative(20), location: 18607 }, Jump { location: 18548 }, Load { destination: Relative(20), source_pointer: Relative(14) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 18554 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(2) }, JumpIf { condition: Relative(22), location: 18564 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, JumpIf { condition: Relative(24), location: 18564 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 18568 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(20) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(17), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 18573 }, Call { location: 18867 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 18580 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Load { destination: Relative(20), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(5) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(22), source_pointer: Relative(27) }, Not { destination: Relative(23), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(23), rhs: Relative(20) }, JumpIf { condition: Relative(22), location: 18600 }, Jump { location: 18607 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(24), rhs: Relative(4) }, JumpIf { condition: Relative(20), location: 18603 }, Jump { location: 18607 }, Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(19), source: Relative(25) }, Store { destination_pointer: Relative(18), source: Relative(13) }, Jump { location: 18607 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(20) }, Jump { location: 320 }, Load { destination: Relative(17), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(18), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(17) }, JumpIf { condition: Relative(18), location: 18614 }, Jump { location: 18637 }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(18), source_pointer: Relative(23) }, Load { destination: Relative(20), source_pointer: Relative(24) }, Load { destination: Relative(21), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(2) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(2) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(18) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(2) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(22), source: Relative(17) }, Store { destination_pointer: Relative(23), source: Relative(26) }, Store { destination_pointer: Relative(24), source: Relative(20) }, Store { destination_pointer: Relative(25), source: Relative(21) }, Jump { location: 18637 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(17) }, Jump { location: 284 }, Load { destination: Relative(17), source_pointer: Relative(15) }, JumpIf { condition: Relative(17), location: 18749 }, Jump { location: 18643 }, Load { destination: Relative(17), source_pointer: Relative(10) }, Load { destination: Relative(18), source_pointer: Relative(17) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 18650 }, Call { location: 18788 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, JumpIf { condition: Relative(20), location: 18660 }, BinaryIntOp { destination: Relative(23), op: Div, bit_size: U32, lhs: Relative(18), rhs: Relative(2) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(2) }, JumpIf { condition: Relative(22), location: 18660 }, Call { location: 18803 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 18664 }, Call { location: 18867 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(5) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 18669 }, Call { location: 18867 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, BinaryIntOp { destination: Relative(18), op: Sub, bit_size: U32, lhs: Relative(20), rhs: Relative(23) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, JumpIf { condition: Relative(20), location: 18676 }, Call { location: 18870 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Load { destination: Relative(18), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32837) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, Not { destination: Relative(23), source: Relative(18), bit_size: U1 }, BinaryIntOp { destination: Relative(18), op: Or, bit_size: U1, lhs: Relative(24), rhs: Relative(23) }, JumpIf { condition: Relative(18), location: 18700 }, Jump { location: 18695 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(22), rhs: Relative(4) }, JumpIf { condition: Relative(18), location: 18698 }, Jump { location: 18710 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Jump { location: 18710 }, Store { destination_pointer: Relative(17), source: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(10) }, Load { destination: Relative(19), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, BinaryIntOp { destination: Relative(23), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(22) }, JumpIf { condition: Relative(23), location: 18707 }, Call { location: 18867 }, Store { destination_pointer: Relative(10), source: Relative(18) }, Store { destination_pointer: Relative(11), source: Relative(22) }, Jump { location: 18710 }, Load { destination: Relative(18), source_pointer: Relative(17) }, JumpIf { condition: Relative(18), location: 18713 }, Jump { location: 18749 }, Load { destination: Relative(17), source_pointer: Relative(10) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Store { destination_pointer: Relative(23), source: Relative(13) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(4) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(6) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(3) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 33 }, Call { location: 18873 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(19) }, Store { destination_pointer: Relative(11), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Jump { location: 18749 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(17) }, Jump { location: 208 }, Load { destination: Relative(13), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 18756 }, Jump { location: 18779 }, Load { destination: Relative(13), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(16) }, Load { destination: Relative(19), source_pointer: Relative(17) }, Load { destination: Relative(20), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(2) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryFieldOp { destination: Relative(23), op: Add, lhs: Relative(21), rhs: Relative(22) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 18873 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, Store { destination_pointer: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(21) }, Store { destination_pointer: Relative(17), source: Relative(19) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Jump { location: 18779 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(3) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 170 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 18787 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 9417307514377997680 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14479745468926698352 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16850003084350092401 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17677620431177272765 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16567169223151679177 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6895136539169241630 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 955212737754845985 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16954218183513903507 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 18839 }, Jump { location: 18843 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 18865 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 18864 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 18857 }, Jump { location: 18865 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 18877 }, Jump { location: 18879 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 18894 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 18891 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 18884 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 18894 }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 18906 }, Jump { location: 18923 }, JumpIf { condition: Direct(32781), location: 18908 }, Jump { location: 18912 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 18922 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 18922 }, Jump { location: 18935 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 18935 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 18949 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 18949 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 18942 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5727012404371710682 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "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", + "debug_symbols": "VJ3Jkmw7bmX/5Y1r4ARANPkrNZCVqpGlmUwyq2aUP1+XAHn2zolibeULLpyGCA8/uB7/+Ot//M9//X//9i9//4//9Z//56+//dd//PWv//vv//7vf/+3f/n3//zv/+3//v0//+PP//cff/3O/9H662/rv/xlv/my5ov89Tf580Xni82X/dff4s8Xny8xX3K+VH/Zv/my5ovMF50vNl9mlT2r7Fllzyp7VvFZxWcVn1V8VvFZxWcVn1V8VvFZxWeVmFViVolZJWaVmFViVolZJWaVmFViVslZJWeVnFVyVslZJWeVnFVyVslZJWeVmlVqVqlZpWaVmlVqVqlZpWaVmlVqVlm/3/267le5X/V+tft1369+v8b9mvfrXW/d9dZdb9311l1v3fXWXW/9Wc/O17hf836t+Sq/+3Xdr3K//lmvzle7X/f96vdr3K95v9Z81d/9eu5KPSAP9IE92A/8QTzIB3Wh7/aGt7K9le2tbG/lc98vOeAP4kE+qAtnBwysB/LgrLwP2IP9wB/Eg3xQF86uGFgP5MFb+eyO5Qf2A38QF86+WOesnr0gvwP2YD/wB/EgH9SFszMG1gN58FY+O0TWgf3AH8SDfFAXzm4ZWA/OkeYBfWAP9gN/cFY+J/zsnoGz8p9LKWcDDawHZ+XfAX1gD863/7l95WyPPF/lftX71e7Xfb/6/Rr3a96vNV/P9uivR74PyAN9YA/2A38QD/JBXTj7ZOCtfDaKxAF9YA/2A38QD/JBXTgbZWA9eCvbW9neyvZWPhtF14F4kA/qwtkoA+uBPNAH9mA/eCvvt/J+K5+Noue6nY0ysB7IA31gD/YDf3BWPrfG+XEyUBfO1hlYD+SBPrAH+4E/eCufzaTnzjqbqeFspoH14KxzTubZKHpum7NRBurC2SgD64E80Af2YD/wB2/ls1G0DtSAno0ysB7IA31gD/aDs7IfiAf5oC6cnzn2O7AenJ8S64A+sAfnjsoD/iAu9M8aOXC+Sw/Ygz/fZXbAH5wfWPtAPqgLZ+8MrAfyQB/Yg/3AH7yV9a2sb2V7K9tb2d7K9la2t7K9le2tbG9leyvbW3m/lfdbeb+V91t5v5X3W3m/lfdbeb+V91vZ38r+Vva3sr+V/a3sb2V/K/tb2d/K/laOt3K8leOtHG/leCvHWzneyvFWjrdyvJXzrZxv5Xwr51s538r5Vs63cr6V862cb+V6K9dbud7K9Vaut3K9leutXG/leivXXdl+vwfrgTzQB/ZgP/AH8SAfvJXXW3m9lddbeb2V11t5vZXXW3m9lddbeb2V5a0sb2V5K8tbWd7K8laWt/Lbg/b2oL09aG8P2tuD9vagvT1obw/a24P29qC9PWhvD9rbg/b2oL09aG8P2tuD9vagvT1obw/a24P29qC9PWhvD9rbg/b2oL09aG8P2tuD9vagvT1obw/a24P29qC9PWhvD9rbg/b2oL09aG8P2tuD9vagvT1obw/a24P29qC9PWhvD1rvwf5Fzx/Eg3xQF3oPNqwH8kAf/Fl5n18uzx4c8AfxIB/UhbMHB9YDeaAP3sr1Vq638tmD+3cgH9TAPntwYD2QB/rAHpyV9YA/iAf5oC6cPTiwHsgDfWAP3spnD247EA/yQV04O273r9bnu/KAP4gH+aAunP01sB7IA31gD97KZ3/tOhAP8kFdOPtrYD2QB/rgrOwH9gN/EA/+rOznPJ/91XD2l68D64E8OHfUqbD3V8N+cNaR8/bCuQ/Pyr13GvSBPdgP/EE8yAd1ofdOw6nnXK+zdwb0wZ+VfR/YD/xBPMgHdeHsnYH1QB7og7fy2Tt+zurZOwPxIB/UhbN3BtYDeaAP7MFbud7K9VY+e8fP6T1754CfvTOwHsgDfWAP9oPzfsQ6EA/yQV3o9yQa1gN5oA/swX7wVj57J+RAPqgL5+fXwFlnHzjf5QfiQT6oC2fvDKwH8kAf2IP94K189k7021f5oC6cvTOwHsgDfWAPzsp2wB/Eg3xwVj7nud+Gazgr1wF5oA/O1TkVnr0z4A/O76u/8+7a+YX3nNWzd/KcurN3BvaD80uvHogH59feU8/ZOw1n7+SRnr0zIA/0gT3YD/xBPMgHdSHfyvlWzrdyvpXzrZxv5Xwr51s538r5Vq63cr2V661cb+V6K9dbud7K9Vaut3LdleP3e7AeyAN9YA/2A38QD/LBW3m9lddbeb2V11t5vZXXW3m9lddbeb2V11tZ3sryVpa3sryV5a0sb2V5K8tbWd7K8lbWt7K+lfWtrG9lfSvrW1nfyvpW1rfy2V/p5z3e34P1QB7oA3uwH/iDeJAP3sr7rbzfyvutfPZX2QF7sB/4g3iQD+rCee03sB7Ig7eyv5X9rXw2Wu3zDvb5j38H9IE92A/8QTzIB3XhbKuB9eCsfA7wbKsBe7Af+IN4kA/qwtlWA+vBW7neyvVWrrdyvZXrrVxv5bor5+/3YD2QB/rAHuwH/iAe5IO38norr7fyeiuvt/J6K6+38norr7fyeiuvt7K8leWtLG9leSvLW1neyvJWlreyvJXlraxvZX0r61tZ38r6Vta3sr6V9a2sb2V9K9tb2d7K9la2t7K9le2tbG9leyvbW9neyvutvN/K+62838r7rbzfyvutvN/K+62838r+Vva3sr+V/a3sb2V/K/tb2d/K/lb2t3K8leOtHG/leCvHWzneyvFWjrdyvJXjrZxv5Xwrvz2Ybw/m24P59mD2HswD8SAf1IXegw3rgTzQB/ZgP3gr11u53sp1V66zB/88lTq0PpKP9CP7aH/kH8VH+VE9Wp9jfY71OVY71iH7aH/kH8VH+VE9kt9H7bBD8pF+ZB/tj/yj+Cg/qkf6++hz9POt3z6kH9lH+6Ne75zxfoD1q0PykX5kH+2P/KP4KD+qR/0ka+hz9LOs83Ck+mHWkH20P/KP4qP8qB71M61fP/ZcH8lH+lE7zvXoB1tD7TjXvB9tDeVH55Y8JfcGbVgPejE91N94TnzkR13cOclnA146xZ2HZ5XykX5kH+2P/KP4KD+qR/X76HPU56jPUZ+jPkd9jvoc9TnqOf48Nf4BF1CACjRgm+a5swMD2LJsrA97f/YDxl9v0Iv9FNQaFWjADXRgABNYH/ZOvbiAsAlsApvAJrAJbAKbwKawKWwKm8KmsClsCpvCprApbAabwWawGWwGm8FmsBlsBpvBtmHbsG3YNmwbtg3bhm3DtmHbsDlsDpvD5rA5bA6bw+awOWwOW8AWsAVsAVvAFrAFbAFbwBawJWzdOfoR9q9bx0UFGnADHdi23pDdQC7Wh91CLi6gABVowJ6X+DU6MIAJrIc9gvJwAQWoQANuoAMD2MdWjfVh95KLCyhABRpwA9smjQFMYH3YveTiAgpQgQbcQNi6l5ynvavHWh7Wh91LLva63tgrzBBOABNYH84Uy+ACClCBBtxA2Lo/nKfBa6ZaLtaH3R8uLqAAFWjAtu1GBwYwgW3r69b94eKxWd8l3R8uKrCv/AwobaADz7rngfKfe6BX6LPee/6iATfQgQFMYH3Ye/7iAratj633/EUDbqAD29b3Q+9566PoPT/Ye95m9GoBBahAA26gAwPYU0d9onrPN/bUzMMFFKACDbiBDgxgAmFbsPWeP49fVs/ePFSgATfQgQFMYNvOFeqZnIcLKEAFGnADHRjABMLWe37PSNwCClCBvW409gpnO/VAzsMFFKACDbiBDgxgAmHrPX8e4qwe03koQAUacAMdGMC2eWN9OBNugwt4bN7Xrff8xZ5067tkZt0GHdh3dR9Fvya4WB92JzjPipbMnh90YAATWB/Onh9cQAEq0IBdb98PvecvBvDYztOe1aM+F3vPX1xAASrQgBvowADCVp+tB4AeLmDbqlGBBtxABwYwgfVh7/mLCwjbgm3B1nv+PFlaPSD0MIAJrA97z19cQAEe23mctHqo6OEGOjCACawPe89fXEABwta/M5xnVKtHjR46MD7sThB9WXrPn8dNqweKHm6gAwOYwPqw9/zFBRQgbL3nz/Op1WNGDx0YwATWh73nLy5g26xRgQbcwLb1des9f7FtfZf0nh/s3wMu9pXvo5hOMKjAnif9NZ4Vsq9Q7/mLZ4Xsa9F7/mJPqM7YsQE30IEBTGB92Hv+4gIKELaCrWAr2Aq2gq0+Ww8lPVxAASrQgBvowAAmELYF24JtwbZgW7At2BZsC7YF24JNYBPYBDaBTWAT2AQ2gU1gE9gUNoVNYVPYFDaFTWFT2BQ2hc1gM9gMNoPNYDPYDDaDzWAz2DZsG7YN24Ztw7Zh27Bt2DZsGzaHzWFz2Bw2h81hc9gcNofNYQvYAraALWAL2AK2gC1gC9gCtoQtYUvY0EsMvcTQSwy9xNBLDL3E5n2C08Rs3icYXEABKtCAG+jAtmVjAuvhnl4yuIACVKABN9CBAUwgbAu2BduCbcG2YFuwLdgWbAu2BZvAJrAJbAKbwCawCWwCm8AmsClsCpvCprApbAqbwqawKWwKm8FmsBlsBpvBZrAZbAabwWawbdg2bBu2DduGbcO2Yduwbdg2bA6bw+awOWwOm8M2vWQ3BjCB9eH0ksEFFKACDbiBsAVsAVvANr2kGhdQgAo04AY6MIDHdoYMVo+VXexecnEBBahAA26gAwMIW322HjZ7+B1FD5OtM5uwepzsYQLrw+4PFxdQgAo04Aa2bTcGMIFtO68ce9Ds4QIKUIEG3EAHnn/wcB5trh5Oe1gf9j/+ubiAAlSgATfQgbApbApb/4OgnzYuoAAVaMANdGAAE1gfbtg2bBu2DduGbcO2Yduwbdg2bA6bw+awOWwOm8PmsDlsDpvDFrAFbAFbwBawBWwBW8AWsAVsCVvClrAlbAlbwpawJWwJW8JWsBVsBVvBVrAVbAVbwVaw1WfrgbqHCyhABRpwAx0YwATCtmBbsC3YFmwLtgXbgg1dowfq5DzdXz1S99CAG+jAACawPpz+MLiAsClsCpvCprApbAqbwmawGWwGm8FmsBlsBpvBZrAZbBu2DduGbcO2Yduwbdg2bBu2DZvD5rA5bA6bw+awOWwOm8PmsAVsAVvAFrAFbAFbwBawBWwBW8KWsCVsCVvClrAlbAlbwpawFWzTH3oHTH8YPLYz5rF6GvDhBjowgAmshz0Z+HABBahAA26gAwOYQNgWbAu2BduCbcG2YFuwLdgWbAs2gU1gE9gENoFNYBPYBDaBTWBT2BQ2hU1hU9gUNoVNYVPYFDaDzWAz2Aw2g81gM9gMNoPNYNuwbdg2bBu2DduGbcO2YduwbdgcNodtekk2KtCAG+jAALZtN9aH3UsuLqAAFWjADXRgAGEL2BK2hC1hS9gStoQtYUvYEraErWAr2Aq2gq1gK9gKtoKtYKvPVr8fcAEFqEADbqADA5hA2BZsC7YF24JtwbZgW7At2BZsCzaBTWAT2AQ2gU1gE9gENoFNYFPYFDaFTWFT2BQ2hW16SX/Ww/SSwfpwesngAgqwbd5owA10YAATWB9OLxk8tvkQi+4lFxVowA10YAATWB92L7kIm8PmsHUv6QmgHqV86MAAJrA+7F5ycQFxzro/zOdudH+4WB92f7i4gAJUoAE30IGwJWwJW8FWsBVsBVvBVrAVbPPZItmYwLooPWv5cAEFqEADbqADA9i2aqwPuz9cXEABKtCAG3hs/bkXPWspZxBHetbyYX3Y/eHiAgpQgQbcQAfCJrAJbN0JprLuBGc+Snqq8uEGOjCACawPuxNcPEdx5oKkpyofKtCAG+jAACawPuxOcBG2DduGbeMoekufcQH5zZaORgH2t2mjATfQgQFMYH3YW/riAvYFsEYFGnADHRjABNaHvf2tr3Fv/4sCVKABN9CBAUxgfViw9fa3Pr+9/S8q0IC97tkiPfIoZ3BIeuTxoQAVaMANdGAAE1gfLth6S59JKOmRx4cKNOAGOjCACeyzc9pKjzw+XEABtk0aDdg2bXRgAPvKz39bH/aP/Iu9rjX2vdOVzeYdTGB92Jv3zAVJjzw+FKACDbiBDgxgAuvDDVtv3jONJT3y+FCBBtxABwYwgW3rU9173vuU9J6/KEAFGnADHRjABNaHAVvAFrD17p7KenefCSCZDwS7mMD6sHf3xQUUoALPUUTf6727LzowgAmsD3t3X1xA+xT9Uzr63umf0vv8f+dzwC4u4CkyBhVowA10YAATWB/2lr64gLAt2BZsC7YF24JtwbZgE9gENoFNYBPYBDaBTWAT2AQ2hU1hU9gUNoVNYVPYFDaFTWEz2Aw2g81gM9gMNoPNYDPYDLYN24Ztw7Zh27Bt2DZsG7YN24bNYXPYHDaHzWFz2Bw2h81hc9gCtt7+Z6ZMeibyoQINuIEObJs3JrA+7KZwcQEFqEADdmvTRgcGMIH1YTeFiwsowLZlowE30IEBTGA97EnJhwsoQAUasG3V6MAA5ofdNc54mfT0o5zZDrkfjjbowAAmsD7s/nBxAQWoQNi6P5xPc5CefnwYwATWh90fLi6gANu2Gg24gQ5s225MYNvODdMzkQ8XsK98r9D94aIBe7H5cMT+tj7rvdEvKtCAG+jAACawPuyNfvHYqmvojX5RgQbcwGOrvh96o1dfod7oF4/tPLiWHnl8uIACVKABN9CBbZvPjExgfdgb/eICClCBBtxAB8KWsCVsvdGrr3Fv9IsCVKABN9CBAWxbX6He6I09HvlwAQWoQANuoAMDmEDYzouGP72lcQEFqEA/qI118OysHnl8uIACVKABN9CBAUwgbNq23biAAlSgATfQgQFsmzTWh/YDLmDbvFGBbZtPKt1AB/a16KPoTnCxPuwPJD3vr4vNB5D2WZ+PIB1MYH3YH0R6cQEFqEADbmDb+tj6Y0kvJrA+7A8nvdi2vh/6A0pXH0V/ROnFtq3GDXRgABNYH/YHll5cwLb1iUoFGnADHRjABNaH/UGnFxcQtoKtYOuPPF19jftDTy8GMIH1sGcXHy6gAI/tDEJKzy4+3EAHBjCB9WFv9IsLKEDYVttW4wY6MD7s7d+fX9zziNqfC9zziA830IEBTGB92Bv94gIKELbe6OcNYul5xIcODGAC68Pe6BcXsG3aqEADbmDb+rr1xxFfbFs21of9ocQX+8r3UcwHEw8qsNc9vbpHCPV+PvER97uWPSz4MIAJrA/nk4UHF1CACjRg26TRgQFsW98EvXkHe/NeXEABKtCAG+jAAMLWm7c/XLiHBR8uoAAVaMANdGAAE/jZeljw4QK2LRoVaMANdGAAE1gf9uY9/wpVerDwoQAVaMANdGAAE1gfCmz9E73fNu7BwocKNGCvey5LDwtqvxvaw4IPBahAA26gAwOYwPrQYOvN22+t9rDgQwUacAMdGMAEtu1s9B4WfLiAAmxbX7f+ZPGLbeu7pLf0xQD2le+j6B/ug/3D/WKvW41nhX73tgcAtd9w7QHAh/Vh7/l+d7EHAB8KUIEG3EAHBjCB9WHClrAlbAlbwpawJWwJW8KWsBVsBVvBVrAVbAVbwVawFWz12XoA8OECClCBBtxABwYwgbAt2BZsC7YF24JtwbZgW7At2BZsApvAJrAJbAKbwCawCWwCm8CmsClsCpvCprApbAqbwqawdX/opwQ9LPhwAQWoQAO2LRsdGMAE1ofdHy4uoACP7fyLYOlhwYcb6MAAJrA+7P5wcQEFCJvD5rB1L+k3KHpY8GEC68PuJRcXUIAKbJs1bqADA5jA+rB7ycUFFKACYete0m/L97DgwwDmh901vC9L94fzD36lBwAfOjCACayHPQD4cAEFqEADHls/UegBwIcBTGB92P3h4gIKsG39tx26P1zcQAe2bTUmsG3nLukBwIcL2Hd1H8X0h0ED9mJnO/Ukn/ZbwT3J91CBBtxABwYwgfVhb/SLbetj641+UYEG3MC2ZWPb+ih6o19s2+kwPcn3cAEFqEADbqADj63fAu1Jvof1YW/0iwsoQAUacAMdCJvD5rD1Ru+3gnuS76EAFWjADXRgANvWV6g3+mBv9IsLKEAFGnADHRhA2OaPmfSpnj9nMriAAux1+3LPnyzp7TR/tORgzZ8tGVxAASrQgBvowAAmsG1nF/Z03sMFFKACDbiBDuyzk40JrA97o19smzQKsG3aaMAN7GvRR9EvBC7mh739+y2vHrPTfje0x+weBjCB9WFv9IsLKEAFGrBtfWy90S8GMIH1YW/0fru0x+ys3w3tMbuHbYtGA26gAwOYwPqwN/rFtvWJ6s+Xv6hAA26gAwOYwPqwP2/+ImwBW8DWf7Oh3/+t/qsNFx0YwATWh/33Gy4uYNv6CvVfcbhowA10YAATWB/231W5uICw9V9X6TdneyTv4QY68Kx73i7VHrOz806k9pjdQwNuoAMDmMD6sP+mysUFhG3+cpE0GnADHRjABNaH/XdWLvbZqUYBKtCAbdNGB7bNGhNYH/bfXvn1UfRfX7kowF53N/a+GKwPZ88PLqAAFWjADXRgALvebKwP+++uXFxAASrQgBvowADCtmFz2Bw2h81hc9gcNofNYXPYes+f95W15/AeLqAAFWjAtvVN0Hv+YgATWB/2nr+4gALEur2PpTdZ7+PB3scXF1CACjTgBjowgG3ru693d2PP4T1cQAEq0IAb6MAAJhC2BduCbcG2YFuwLdgWbAu2BduCTWAT2AQ2gU1gE9gENoFNYBPYFDaFTWFT2BQ2hU1hU9gUNoXNYDPYDDaDzWAz2Aw2g81gM9g2bBu2DduGbcO2Yduwbdg2bBs2h81hc9gcNofNYXPYHDaHzWEL2AK2gC1gC9gCtoAtYAvYAraELWFL2BK2hC1hS9gStoQtYSvYCraCrWAr2Aq2gq1gQy9Z6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglgl4i6CWCXiLoJYJeIuglMr1EGhdQgAo04AY6MIAJrA8TtoQtYUvYEraELWFL2BK2hK1gK9gKtoJteslu3EAHBjCB9VCnlwwuoAAVaMC2WaMDA5jA+nB6yWDbolGACux1s7FXOK/l5i+nnqfV2gOADwWoQANuoAMDeOo9H2is89dVB7s/XGxbl9794aICDbiBDgxgAtvmB7s/XFxAASrQgBvowAAmELYN24Ztw7Zh27Bt2DZsG7YN24bNYetOoH2Ne89fDGAC68Pe8xcXUIBYt/f8xQ1sW99RvbsHe3dfXEABKtCAG4h1e3dfTGDb+v7t3X1xAQWoQANuoAMDmMDPNn+p9eICClCBBtxABwbw2PrvH8/fbh3s3X1xAY+t/yDy/A3X/rvH8zdb+88bz19tvZjAXvc0m/lLreeJuc5fZj2PvnX+NuvFACawPux9fB6I6/yV1osCVKAB29ZH3Pv4YgCPbfdhzl9tbZy/2zq4gAJUoAGPbfeJmr/hOhjABNaH87dcBxdQgH1s2mjADXRgABNYH/Y+vriAAuxj62s8f+d1cAMd2Mc235bA+nD+5uvgAgpQgQbcQAfCNn+Hue+z+bvLgwJUoAE30IEBpHX7KPr+nb/EPLiAAsS+6D1/cQMdGMAE1sMeAHy4gAJUYLydtWdLD9aHs6UH19uQe7b0oAINuIF9omaFACbw2LzLmT/JHI0KNOAGOvCse/5xhPbU38P6sLf/eYyrPfX3UIDH5l1vb/+LG+jAACawPuzt731svf0vClCBBtxABwbwa2099Xext//FBRSgfTg/hLvI3rxnDk/nj8xeVKABN9CBAUxgfTg/sAf7PFSjABVowA10YAATWB/2j/GLsCVsCVvClrAlbAlbwpawFWwFW2/p89xfeyzwoQE30IEBPLboc9ZburHHAh8uoAAVaMAN/NbtUT87T+K1R/0eKtCAG+jAACawPuwX6RfbJo0CVKABN9CBAUxgfdi7+yJsCpvCprApbAqbwqawKWwGm8FmsBlsBpvBZrAZbAabwbZh27Bt2DZsG7YN24Ztw7Zh27A5bA6bw+awOWwOm8PmsDlsDlvAFrAFbAFbwBawBWwBW8AWsCVsCVvClrAlbAlbwpawJWwJW8FWsBVsBVvBVrAVbAVbwVafLX4/4AIKUIEG3EAHBjCBsC3YFmwLtgXbgm3BtmBbsC3YFmwCG3pJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEekmglwR6SaCXBHpJoJcEeklML9HGACawHub0ksEFFKACDbiBDgxgAmFbsC3YFmwLtgXbgm3BtmBbsC3Yppd44wIKUIEG3EAHBjCB9aHCNr1kNwpQgQbcQAe2LRsTWB9O16jGs8IZitKePLQzJKc9efgwgfVh94eLCyhABZ56z7+B1p48fOjAtnXp3R8u1ofdHy4uoAAVaMC2RaMDA5jA+rD7w8UFFKACDQhbwBawBWwBW8KWsCVsCVvClrAlbN0Jsq9x7/mLCjTgBjowgAn81u3Jw4cL2LZq3EAHBjCB9WHv7osLiHV7d1804LGdgUXtGcOHAUxgfdi7++ICClCBBoRNYBPYBDaBTWFT2BQ2ha1395mU1B5NfOjAALZNGtt2OlcPIVpPFvUQ4kMD9rre2Cuce2cGC6uvZu/jiwo04AZ2ZX0teh9fTGB92Pv44h/b/vURn338UIF2sA/z7OOHDgxgAuvDs48ftq1PVAhQgQbcQAcGMIF9bKeJzWDhxQUUoAINuIEODGAC+9j6GtcPuIAC7GPrbysDbqADA5jAumj9WX8PF1CACmzbbgxgAuvD9QMuoAAViHVXH4U3OjCACXz7wmbc8OICClCBBtxABwYwgbDNlo5GA26gA+NuSPvNlh6sD/vF/8UF7BPVK5gCDXhO1OpyrE9JNtaH+wdcQAGedVdf2LP9H27guQCrL8vZ/g8TeGyr6z3b/+ECClCBBtzAtvWx9fa/mMD6sLf/xQUUoAJfa7OZMbzowADmh7PnB/tHXRfZm/d8jovNNOHFU9mZ+rOeJny4gAJUoAE30IEBTOBn62nChwsoQAUacAMdGMAEwrZgW7At2BZsC7YF24JtwbZgW7AJbAKbwCawCWwCm/QdVY0BTGB9qD/gArZtNSrQgBvowAAmsD40rNv7+ExxWE8IPgxgAuvD3t0XF1CACjRg27TRgQFMYH3Yu/viAgpQgQaEzWFz2Bw2hy1gC9gCtoAtYAvYAraALWAL2BK2hC1hS9gStoQtYUvYEraErWAr2Aq2gq1gK9gKtoKtYKvPJr8fcAEFqEADbqADA5hA2BZsC7YF24JtwbZgW7At2BZsCzaBTWAT2AQ2gU1gE9gENoFNYFPYFDaFTWFT2BQ2hU1hU9gUNoPNYDPYDDaDzWAz2Aw2g81g27Bt2DZsG7YNG3qJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomglwh6iaCXCHqJoJcIeomilyh6iaKXKHqJopcoeomilyh6iaKXKHqJopcoeomilyh6iaKXKHqJopcoeomilyh6iaKXKHqJopcoeomilyh6iaKXKHqJopcoeomilyh6iU4vsUYFGnADHRjABNaH00sGFxA2g81gM9gMNoPNYDPYNmwbtg3bhm3DtmGbXhKNAUxgfTi9ZHABBahAA24gbA6bw+awBWwBW8A2vcQbDbiBDgxgAtt2Xnvq9JLBBTzrnmEK6xnDfaZWrWcMt/Zt1P1hsPvDxQUUoAINuIGn3jMoYj1j+DCBbTul94zhwwUUoAINuIEObFs2JrA+7P5wcQEFqEADbqADYVuwLdgENoFNYBPYBDaBTWAT2AS27gRnqtJ68vDhBjowgAmsD3vPX8S6vecvKvDYzoim9YzhwwTWh727Ly6gABWIdXt3X3Rg21ZjAuvD3t0XF1CACjTgBjoQNofNYQvYAraALWAL2AK23t1noM56xvBhAuvD3t1nUtJ68nCfYVfrGcNtvQP6NcFFB/a60djr9r3Tu9v6avY+3n1+ex9fdGAAE3gqO2Oi1nODDxdQgAo04AY6MIAJbNs5Dz1Y+HABBahAA25g27QxgAmsD3sfX1xAASrQgBsIm8AmsAls/XP+TIFajxs+FKACDbiBDgxgAutDg81gM9gMNoOtf86fEU3rccOHAUxgfTidYHABBahAA/axDTowgAnsYzu3fQ8sPlxAASrQgBvowAAmELbuBGek1Ho08aEBN9CBAUxgfZhYt/f8+cAm69HEhwo04H79YU8nGAxgAuvD/ul/cQEFqEADwtZNodtKTx4+XEAB6mtMPXn4cAMdGMAE1utn/YGEDxfw2M6crvls/xbP9h8MYALrw97+ZzjXeh7xoQAVaMANdGAAj+0M51rPI17s7X9xAQWoQAO2rU9Jb/+LAUxgfdjb/+ICClCBBoTNYDPYDLbe/t7Xorf/xQUUoAINuIEODGACYXPYHDaHzWHz7weg+wY6MIDfD0CfPT/YL7T6iHtLe987vaUv1oe9pS8uoAAVaMANdCBsvaXP5Kz1NOHF3tIXj+1M9VhPEz5UoAE30IEBzIc9N/iwV9DGXuHX6MBewRoTWB/2Pr64gAJUoAE30IGw9e4+EzXWE4IXe3dfbFs0ClCBBtxABwYwP1Ss2zv2jNxYT/3tM55jPfX3sFeoxgTWh71jLy6gABVowA10IGwGm8G2Yduwbdg2bL1j+9FWT/09dOCxZd8lvWMv1oe9Yy8uoAAVaECs2xsy++7rl+PZt1y/HL/YK/QF6B/NFzfQgQFMYH3Y+/jiAgoQtoQtYUvYEraELWEr2Aq2gq1gK9gKtoKtYCvY6rP1JN/DBRSgAg24gQ4MYAJhW7At2BZsC7YF24JtwbZgW7At2AQ2gU1gE9gENoFNYBPYBDaBTWFT2BQ2hU1hU9gUNoVNYVPYDDaDrfvDmYGz/rzBhwbcQAcG8NjOQJL11N/F7g8XF1CACjTgBh7bmWaxnvp7mMD6sPvDxQUUoAINuIGwOWwOW7+g73mNnvp7uIACVKABN9CBbfPGBNaH3UsuLqAAFWjADXQgbN1LeqikZwEvdi+5uIB/1vVfX5bTH/yMSllP/T2shz3193ABBahAA26gAwPYNmmsD9cPuIACVKABN7DPTjUGMIH1obRNGxewbdaoQAP2teij6P5wMT7UXnc39grRaMANdGAAE1gf2g+4gAJsWx+bGXADHRjAYzufL2f90YO++ijOnn/YtmwUoAINuIEODGAC29Ynyn/ABRSgAg24gQ4MYAJhC9gCtmhbX+NQoAE30IEBTGB9mG3rK5QLKEAFGnADHRjABNaHBVu1rU91CVCBBjzrnqmT3VN/fkZCdk/9PRSgAg24gQ4MYALrwwVb7/nzwGv3LOBDBRpwAx0YwAS27Xew9/zFBRRg26zRgG3bjQ4MYF+LPgqpD7sTXOx1vbFXyMYAJrA+7D1/cQEFqEADbuCxaR9b7/mLCawPe89fPDbt+6H3vPZR9J6/2LZq3EAHBjCB9WHv+YsL2LY+Ub3nLxpwAx0YwATWh73nLy4gbAFbwNZ7Xvsa956/GMAE1oe95y8uoADb1leo9/zFDXRgABNYH/aev7iAAoSt97z2qa4NdGA87BFCP88kdg8L+nkmsXtY8OEGOjCACawPe89fXEABwtZ7/rznuHtY8KEDA5jA+rD3/MUFbNtqVKABN7BtuzGAbfPG+rD3/MW+Fn0UKkAF9rrR2Cv0We89f3EBBahAA26gAwOYwGPbfWF7z19cQAEq0IAb6MAAJhA2h81hc9gcNofNYXPYHDaHzWEL2AK2gC1gC9gCtoAtYAvYAraELWFL2BK2hC1h6z2/+5brPX8xgfVh7/mLC9i2vrl6z1804AY6MIAJrIc9FviwV7BGB/YKuzGB9WHv+YsLKEAFGrBt3ujAACawPuw9f3EBBahAA8ImsAlsApvAprApbAqbwqawKWwKm8KmsHV/OO9B7x4AfLiAbctGBRpwAx0YwATWh9MfBhcQtg3bhm3DtmHbsG3YNmwOm8PmsDlsDpvD5rA5bA6bwxawBWwBW8AWsAVsAVvAFrAFbAlbwpawJWwJW8KWsCVsCVvCVrAVbAVbwVawFWwFW8FWsNVn6wHAhwsoQAUacAMdGMAEwrZgm14SjQJUoAE30IHHdj4DaPcA4MP6sHvJxQUUoAINuIEOhE1gE9i6a5wnmVunP1SjAwOYH3YnOA8Jdw/q+Xn4uHtQ76EDA5jA+rD3/MUFFKAC29Y19J6/6MAAJrA+7D1/cQEFqEDYHDaHzWFz2By2gC1gC9gCtoCt97z3Ldd7/mIAE1gf9p6/eGzn4djuDw58qEADbqADA5gfFtbtfXyeAe4e1HvYK0hjABNYD3tQ7+ECClCBbdPGDXRgABNYH/Y+vriAAlQgbAu2BduCbcG2YBPYBDaBTWAT2AQ2gU1g6318ni3u/jjBi/2a4OICClCBBtxABwYQtn5NcB4o7h7qe7iAAlSgAduWjQ6MD7sTnAd/u8f3/Dxe2z2+59k3Qe/5iw4MYALrw97zFxfw1Hs+G2D3+N5DA7atS+89fzGACawPe89fXEABti0aDbiBDgxgAuvD3vMXF1CAsCVsCVvClrAlbAlbwVawFWwFW8HWneA8Ndo91PdwAQWoQANuoANp3QTWh73nz7/h3z2+99CAG+jAACawPhSs27v7ogCP7TyN2j2+93ADHRjABNaHvbsvLqAAYVPYFDaFTWFT2BQ2g81g6919HjnsHt97aMANbJs0tu10rh7U8/PZALsH9R4KsNf1xl4hGruyvpq9jy8uoAAV2JX1teh9fNGBAUzgH1v8+ojPPn64gHKwD/Ps44cG3EAHBjCBbesTlT/gAgpQgQbcQAf2sVljAuvD3scXF1CACjTgBjqwj62vcSWwHvbM3sM+NmsUoAINuIEODGAC68P1A8K22rYbN9CBAUxgfSg/4AJiXemj8EYDbqADv33hs+cH68PZ84MLKEAFGnADHQjbbOloFKACDbjfhvTZ0oMBTGB9uPtE9Qp7AQV4TtTqcnafkmwMYALrQ/8Bz7qrL+zZ/g8VeC7A6stytv9DBx7b6nrP9n9YH/b2v7iAAlRg2/rYevtfdGAAE1gf9va/uIBfa+vxvYcG3EAH5ofzQ7iL7M17pqZ2D989DGAC62HMD+zBBRSgAg14zkM/5epBvYcBTGB92Jv34gIKUIEGhG3BtmBbsC3YBDaBTWAT2AQ2ga239Pkn+rsH9R4msD7UH3AB29bnTBVowA10YAATWB8a1rVeQRod2CtoYwLrw97HFxdQgAo0YNus0YEBTGB92Lv74gIKUIEGhM1hc9gcNoctYAvYAraALWAL2AK2gC1g6919/jne7qG+hwsoQAUacAMdGMAEwlZt88YFFKACDbiBbevbs3+4X8yHPb4X/ey2B/Win932oF70w6Ye1HsYwATWh73nLy6gAE+9/SSzB/UebmDbvDGACawPe89fXEABKrBt2biBDgxgAuvD3vMXF1CACoRNYVPYFDaFTWEz2Aw2g81gM9gMtu4E/Ty2h+8eClCBBtxABwaQ1q0Pe89fPDbrO6p398UNdGAAE1gf9u6+iHV7d19UYNv6/u3dfdGBAUxgfdi7++ICClCBsCVsCVvClrAlbAVbwVaw9e7u5+g9fPdwAx3Ytt5kvbv7aXUP30U/Ve7hu4cK7HWjsVc4904P1EU/8u2BuocCVKABT2X9WKkH6h4GMIH1Ye/jfg7ZA3UPBXhs/aizB+oebqADA5jA+rD3cT+S7A/XeyhABRpwAx0YwD7ru7E+7H18cQEFqEADbqADA9jH1te4f84P9s/5iwvYx9bf1nv+ogE30IEBTGB92Hv+4gLC1j/n+zlkj9k9DGAC68Pe8xcXUIBYt/d8P5DpMbuHDgwg9sXs+cbZ84MLKEAFGnADHRhA2GZL986aLT1owA30b0POlh5MYF30nrh72CcqGwWowGM7z4e8Z+viPP7xnq17WB/29r+4gGfd8/DGe7buoQHPUZxnSd6zdQ8DeGze9fb2H+ztf3EBBahAA7atj623/8UAJrA+7O1/cQEF+Fqb9wfxPdxABwawPpwfwl1kb94z+OY9RfcwgfVhb96LCyhABfZ5aFtv3osODGAC68PevBcXUIAKhM1hc9gctt7S5wGS9xTdxd7SF48t+ih6S19UoAE30IEBzA8T6/Y2PQ9ZvCfj4jzl8p6MexjABNaH/aP54gIKUIEGhK1gK9gKtvpsPS/3cAEFqEADbqADA5hA2BZsC7YF24JtwbZgW7At2BZsCzaBTWAT2AQ2gU1gE9gENoFNYFPYFDaFTWFT2BQ2hU1hU9gUNoPNYDPYDDaDzWAz2Aw2g81g27Bt2DZsG7YN24Ztw7Zh27Bt2Bw2h81hc9gcNofNYXPYHDaHLWAL2AK2gC1gC9gCtoAtYAvYEraELWFL2BI29JKFXrLQSxZ6yUIvWeglC71koZcs9JKFXrLQSxZ6yZpeYo0JrIcyvWRwAQWoQANuoAMDmEDYppd44wIKsG3RaMANdGAAE1gfTi8ZxLrTH7KxV9iNCTwrnCfQ3hN3DxdQgAo04AY6MIAJbNv54dMTdw8XUIAKNOAGOjCACYRtw7Zh27Bt2DZsG7YN24Ztw7Zhc9gcNofNYXPYHDaHzWFz2By2gC1gC9gCtoAtYOv+cMYFvCfuHiawPuz+cHEB29a3ffeHiwbcQAcGMIH1YWHd3vPZN23v+Yu9Qm+n3vMX62FP0T1cQAEq0IBti0YHBjCB9WHv+YsLKEAFGhC2BduCbcG2YBPYBDaBTWAT2AQ2gU1gE9imP5wXpzr9YXAB21aNCjTgBjowgAmsD6c/DC4gbAabwWawGWwGm8FmsG3YNmwbtg3bhm3DtmHbsG3YNmwOm8PmsDlsDpvD5rA5bA6bwxawBWwBW8AWsAVsAVvAFrAFbAlbwpawJWwJW8KWsCVsCVvCVrAVbAVbwVawFWwFW8FWsNVns98P2LZsFKACDbiBDjy2M1rgPcn3sD7sXnJxAQWoQANuoANhW7At2LprnAkV7+m8OPMw3tN5DwOYwF6hD6j7w8UFFKACDbiBDgxgAmEz2Aw2g81gM9gMNoPNYDPYDLYN24Ztw7Zh27Bt2DZsG7YN24bNYXPYHDaHzWFz2Lo/nPEG70m+hwmsD7s/XFzAtvW93v3hogE30IEBTGB9mFj37Pn89W109vzDOLgaE1gfnj3/cAEFqEADtk0aHRjABNbDnuR7uIACVKABN9CBAUwgbAu2BduCbcG2YFuwLdgWbAu21baz0Xu+7+ECClCBBtxABwYwgbApbAqbwqawKWwKm7bNGgOYwPrQfsAFbFs0KtCAve7ZQz3Jl+ef83tP8uX5h/vek3wPFWjADXRgABN46j0jQt5Tfw8XsG1duivQgBvowAAmsD6MtnnjAgpQgQbcQAcGMIH1YcKWsCVsCVvClrAlbAlbwpawFWwFW3eC1de49/zFBNbDnuR7uIACVKABN9CBbTt3VM/sPVxAASrQgBvoQFo3gfVh7+4zfeM9yfdQgAo04AY6MIAJrA8VNoVNYVPYFDaFTWFT2BS23t1nIMn70/ceLqAAj+3MBXmP+uUZBvIe6sszt+I91PewPuw9fz5+wHuoL8+giPcn6qX01ex9LH1+ex9frA97H19cwK6sj6L38UUDbqADA5jA+rD38cUFPDbt89D7+KIBN9CBAUzgsWmfyd7HFxdQgAo04AY6MIAJhK1gK9gKtv453898egDw4QY6MIAJrIc9APhwAQWoQANuoAMD2NdNG+vD7gQXF1CACjTgBjowgH1sg/Vhd4KLC9jHZo0KNOAGOjCACawPuxNcXEDYuhOckSbvUb+HAUxgfdh7/uICChDr9p4/003eY4EPHRjAfP0hphM0TicYXEABKtCAG+jAAMI2TSEaFWjADfTXmGKawmAC68P4ARdQXj/rqb+HBjw268pm+7d4tn/jbP/BBRTgWdf65urtf3EDHRjABNaHvf0vHpv1vdPb/6ICDbiBDgxg2/qU9PZv7A/te7iAAlSgATfQgQFMIGwLtgVbb/8zeuQ9C/jQgBvowAAmsD7s7X9xAWET2AQ2gU1gk+8HYM8CPvx+APYs4MMFVGC/aOgj7i3dQxo9yfdQgAo04AY6MIAJrA83bBu2DduGbcO2Yduwbdg2bBs2h81h6z3foxD9kXsPDXhsZ/bLexbwYQATWB/2nr+4gALEur27z/SY93xfWl+W3t0Xe4W+Qr27LyrQgBvowAAmsD7s3X0RtoKtYCvYCraCrWAr2Oqz9UfuPVxAASrQgBvowAAmELYF24JtwbZgW7At2BZsC7YF24JNYBPYBDaBTWAT2Hp3n0E97wnBhwmsD3t3X1zAtkWjAg24gQ4MYALrw+4PvhoXUIAKNOAGOjCACawPN2wbtg1b9wf/NRpwAx0YwATWh90fLratz2T3h4sKNOAGOjCACawPuz9chK37Qw++9dzgQwNuYK/bl6X7Q0+E9SzgQwUacAMdGMAE1ofdHy7C1v2hZ6l6WPChATfQgQFMYF2MHhbMM4cXPSz4UIAKPLYzcBD98XwPj+0McUWPED5MYN/VeXD6w+AC9mLS2JuhbbPRG2ejDy6gABVowA10YAC7SG2sD3ujX1xAASrQgBvowADCprD1Ro8upzf6RQEq0IAb6MAAJrA+3LBt2DZsG7be6NnXuDf6RQcGMIH1YW/0iwsoQAXC5rA5bL3Ro2/a3ugX68Pe6BcXUIAKNGDb+u7rdwQuBjCB9WG/aLi4gAJUoAFh66aQfRN0U7iYwPqwt3/2ZemNfh5RR08TPgxgAuthTxM+XEABKtCAG9i2bAxgAuvD3ugXF1CACmzbbtxABwawbdVYH3Z/OE/loqcJHwqwr3wfRfeHixt41j3/uD16QjDPP26PnhB8eP7b87wwehbwYQB7hS6yd/dg7+6LC3jKqRb3lr64gQ4MYALrw97SFxfwT+n16wM6W/qhATfQgQFMYH14tvTDBYTNYXPYvG19LdyBAUxgfRg/4AIKsG3aaMANdGAAE1gf5g+4gAKELdvWVz430IHxYfW6fVmqV+jbvgy4gQ4MYALrYQ/1PVxAASqwbdW4gQ4MYALrw/UDLmDbvFGBBtzAYzsfDR091Pfw2M5DoeihvotnSz/su7qPYrb0oAJ7XWnsfdG2/jF+cQEFqEADbqADA5jArvfcDz3U93ABBXjOzvndP3qo7+EGOjCACawP9w/Ytr4WvecvKtCAG+jAACawPuw9fxE2h81h6z2/+rL0nr/owAAmsD7sPX9xAY9N+n7oPX/RgBvowAAmsD7sPX9xAWHrPS99c/Wev7iBDux1+7JUr9B3Se/5iwbcQAcGMIH1sIf6Hi6gANsWjQbcQAcGMIH1Ye/5i22zRgEq0IBty0YHtq0aE1gfzp7vo5AFFOBZ9zybiR7Uq9U2qQ/1B1xAASrQgBvowAAe23n0Ej2od7H3/MUFPLbznCF6UO+hATfQgQFMYH3Ye177WvSevyhABRpwAx0YwATWhw6bw+aw9Z7Xviy95y9uoAMDmMD6sPf8xbb1/dB7/qICDbiBDgxgAuvD3vMXYUvYes9b32e95y9uoAPPutZXqPe89Q3Te/6iATfQgQFMYD3s4buHCyjAtu1GA26gAwOYwPqw9/zFtkmjABVowLZ5owPbFo0JrA97z2sfRe/5iwLsdbOxr2bbes8P9p6/uIACVKABN9CBATy287Zx9PBdnbeNo4fvHi6gAI/tvDcYPXz3cAMdGMAE1oe95y+2rc9Z7/mLCjTgBjowgAmsD3vPX4TNYXPYes/3uyg9fPfQgQFMYH3Ye/7iAratGhVowA10YAATWB/2nr+4gLD1nve+3L3nL26gA8+63pel97z3ndp7/qIBN9CBAUxgPezhu4cLKMC27UYDbqADA5jA+rD3/MW2SaMAFWjAtnmjA9sWjQmsD3vP7z6K3vMXBdjrZmNfzbb1nh/sPX9xAQWoQANuoAMD2PVWY33Ye/7iAh5bv8PZA3UPDbiBDgxgAuvD3vPR16L3/EUBKtCAG+jAACawPnTYHDaHrfd89GXpPX9xAx0YwATWh73nL7at74fe8xcVaMANdGAAE1gf9p6/CFvv+eibq/f8RQNu4Fk3+7Kc9+Kr37jrj9F7qEADbqADA5jAetjDdw8XsG3aqEADbqADA5jA+rD3fL+12iN5DwWowLZZ4wa2bTcGMIF9Lfooes9fXMBe1xt7hWxMYH3Ye/7iAgpQgQbcQAceW7832GN2D+vD3vMXF/DY+m3CHrN7eGz9NmF/ot7DtlVjABNYH/aev7iAAlRg2/qc9Z6/6MAAJrA+7D1/cQEFqEDYHDaHrfd8v63Zg3oP68Pe8xcXUIAKNGDb+mL1nr8YwATWh73nLy6gABVoQNj653z1qe738C4msD48neDPO+t9vc+m/8O9t86u/ziIk7g+7hG8jxexECuxEW/i8VpzECdxgdePeBELsRKPdzVvYicO4vHu5gLLeL15EQtxX6g+rG4TFzdwFjxNvWfs/nA1K7ERb2InDuIkLrD9iBdxe/t9yh7C+9iIN7ETt7fft+xJvD/cx2UF3u3tN0p7GO9jIVZiI97EThzE4+1zuAvsP+JFLMRKbMSb2ImDmLxO3iBvjLdvhhBiJTbiTezEQZzE4+3rmD/iRSzESmzEm9iJgziJyVvtlb4WtYiFWIl7fel7YxpIv+OW00AuL2IhVmIj3sROHMRJTN5pIP2WZ04DuSzESmzEm9iJg3i80lzgaSCXF/F4vVmJxxvNm9iJ53r1cUkSF3j6TL+fmbefDDtxECdxgW8/GV7EQqzERjz1V7MTB3ESt7ffnMzpJ5cXsRArsRFvYidur/b1mn5yucDTTy4vYiFWYiPexE5MXievk3f6Sb+TlNNPLguxEhvxJnbiIB5v3z/TT4ann1xexEKsxEa8iZ04iMk7/UT73ph+cnkRC3Gvb33t5gVJv4OX00+aa/rJ5UUsxEpsxJvYiYM4icd7elpNP7m8iIVYiY14EzvxeH/NSVzg6SeXx2vNQjze3WzEm3iuVx/X9JPLCdZZ35vnurd3+sllJw7iJC7w9JPLi1iIlXjqj+ZN7MRBPOetmgs8/eTyIhZiJTbiTdzefqezpp9cTuICTz+5vIiFWImNeBOT18nr5J1+0m8Q1fSTy4tYiJXYiDexE4+375/pJ5cLPP3k8iIWYiU24k3sxOSdftJvwdb0k+HpJ5cX8azf125+wel3Rmv6yeV6nL/pJ5cXsRArsRFvYicO4vGu5gJPP7m8iIVYiY14E895y+YgTuICTz8575Lmb/rJ5fFqsxIb8VyvPq7pJ5cDrLO+Nc/+au/0k8ub2ImDOIkLPP3k8iIW4ql/NxvxJnbiuV7enMQFnn5yeRELsRIb8Xi7tuknl4M4iQs8/eTyIhZiJTZi8jp5nbxOXidvkDfIG+QN8gZ5g7xB3iBvkDfIm+RN8iZ5k7xJ3iRvkjfJm+RN8hZ5i7xF3iJvkbfIW+Qt8hZ5C951+081L+L2nkHmXNN/LhvxJnbiIE7iAk//OZO+uab/XBZiJTbiTezEQZzEBRbyTv85b37nmv5zWYmNeBM7cRAncYGnL10mr5JXyTv96swb55p+ddmJgziJCzz96vIiHm9f6+lXl414EztxECdxgadfXV7E5J1+lX0/TL+6vImduNfPvnbTf87b7bmm/1w24k3sxEGcxAWe/nN5EZN3+s95Rz/X9J/Lm9iJgziJCzz95/J4pVmIldiIx9vXd/rP5fH2fTX953KBp/9EH9f0n8tCPOt335h+ct54T5lecR4EpEyvuGzEm9iJgziJCzy94vIiJu8i7yLvIu8i7yLvIu8ir5BXyCvkFfIKeYW8Ql4hr5BXyKvkVfIqeZW8Sl4lr5JXyavkVfIaeY28Rl4jr5HXyGvknV5x3pdOmV5xucDTKy4vYiFWYiPexE5M3k3eTV4nr5PXyevkdfI6eZ28Tl4nr5M3yBvkDfIGeYO8Qd4gb5A3yBvkTfImeZO8Sd4kb5I3yZvkTfImeYu8Rd4ib5G3yFvkLfIWeYu8Ba/+fsSLWIiV2Ig3sRMHcRKTd5H39itrFmIlnp+zq9mJgziJC3xfzwwvYiFW4jlGb97EThzESVzg26OGF7EQKzF5u0et8+8UssdKPw7iJC5w96jHi1iIldiIyWvkNfLeHlXNBb49angRC7ESG/EmHq80B3ESF9h/xItYiJXYiDcxeX28fX96Ehc4fsSzfl+7mHWiOYiTuMD5I17EQqzERryJyZvjzeYkLnD9iBexECuxEY93NztxECfxeM/17ZHUj9t7nidmD6V+rMRzn0TzJnbiXv88G80eN/2D0oyfxUaveYxe89h9nTPfm8Sz5uk/PWr68SIWYiU24k3sxH2uVtffPeRxgfVHvIiFWImNeBM7MXmVvEpeI6+R18hr5DXyGnmNvEZeI6+Rd5N3k3eP15uV2Ig3sRMH8XizucDTQy4vYiFWYiPexLR+zDp9n4cQ9zrS916/bnm8iZ04iJO4wNNDLrdX+h6eHnJZiY14EztxECdxgaeHXCZvkbfIW+Qt8hZ5i7xF3oJ3/37Ei1iIldiIxyvNThzESVzg9SNexEI8Xm024k3sxEGcxAWe/nN5EQsxeYW8Ql4hr5BXyCvkVfIqeZW8Sl4lr5JXyavkVfIqeY28Rl4jr5HXyGvkNfIaeY28Rt5N3k3e6T9nHiD39J/LRryJnTiIk7jA038uL2LyOnmdvE5eJ6+T18nr5A3yBnmDvEHeIG+QN8gb5A3yBnmTvEneJG+SN8mb5E3yJnmTvEneIm+Rt8hb5C3yFnmLvIX+4Lf/WLMSG/EmduIgTuIC3/5TzYtYiJXYiDexEwdxEhdYyCvkFfIKeYW8t/9ksxMHcRIX+Paf4faeZ9Dp038uK7ERb2InDuIEG60//eTMqKRPP7k86/S1nn5yOYkLPP3k8iIWYiUerzZvYicO4iQu8PSTy4tYiJWYvE5eJ6+T18nr5A3yBnmDvEHeIG+QN8gb5J1+or0Xpp8MTz+5vIiFWImNeBOPt+/b6SeXk7jA008uL2IhVmIj3sTkLfIWeafPnDmTnKHfx4tYiJXYiDexE7f3zL3kDP0+LvD0n8uLWIiV2IjjO88zxLvOHEvOEO9jIVZiI97EThzESVxgJa+SV8mr5FXyTj85szo5M8CPgziJCzyvZy6PN5qFWImNeBM7cRAneNP600/6mfvM9D6edao5iJO4wNNPLi9iIVbi9va8wcz0PnbiIE7iAk8/ubyIhViJyRvkDfIGeYO8Qd4kb5I3yZvkTfImeZO8Sd7pJ+dffebM9F6efnJ5EQuxEhvxJh6vNAdxEtfHMwP8eBELsRIb8SZ24iBOYvIu8i7yLvIu8i7yLvIu8i7yLvIu8gp5hbxCXiGvkFfIK+QV8gp5hbxKXiWvklfJq+RV8ip5lbxKXiXv9J8zr5UzM/xYiJXYiDexEwd4477N+/6MNhvxJnbiIE7iAt/3Z4YXsRBP/dFsxJvYiYM4iee8nT6Wt/8ML2IhVmIj3sRO3N6e6ZoZ4McFnv5zeRELsRIb8SZ2YvImeZO8Rd4ib5G3yFvkLfIWeYu8Rd6Cd2aGHy/i8a5mJTbiTezEQTxebS7w9J/Li1iIldiINzGtP/2k5+tmBvjxrLObjXgTO3EQJ3GBp59cHq83C7ESG/EmduIgTuICTz+5TF4jr5HXyGvkNfIaeY28Rt5N3k3eTd5N3k3e6T898zkzw4+DeLzZXODpP5cXsRArsRFvYicOYvI6eYO8Qd4gb5A3yBvkDfIGeYO8Qd4kb5I3yZvkTfImeZO8Sd4kb5K3yFvkLfIWeYu8Rd4ib5G3yFuft36/H/EiFuLxRrMRb2InDuIkbu+Zr6uZMX68iIVYiY14EztxECcxeYW8Qt7pS2eWqX63/1RzEhf49p/hWcebhViJjXgTO3EQJ/HU367pP5cXsRArsRFvYicO4iQm7ybvJu8m7ybvJu8m7ybvJu8m7yavk9fJ6+R18k7/ib5vp/9cduIgTuICT/85s4U1M8aPhViJjXgTO3GAk9affnI+MaFmZvjxrCPNThzESVzg6SeXF7EQj7fv/+knlzexEwdxEtfHMzP8eBELsRIb8SZ24iBOYvIu8i7yLvIu8i7yLvIu8t5+Es1JXODpJ2cms2Zm+LEQK7ERb2InDuIkLrCSV8mr5FXyKnmVvEpeJa+SV8lr5DXyGnmNvEZeI6+R18hr5DXybvJu8m7ybvJu8m7ybvJu8m7ybvI6eZ28Tl4nr5N3+s+ZB66ZMX4cxElc4Nt/htt7ZjZqZowfK7ERb2InDuIkLvD0pcvkTfImeacvnbmRWrf/nJ9Z6/af4UUsxPO9Z6/J9IrzKRY1s8HrfLBEzWzwYycO4iQu8PSEy4tYiJWYvIu8i7yLvIu8i7xCXiGvkFfIK+QV8gp5hbxCXiGvklfJq+RV8ip5lbxKXiWvklfJa+Q18k5POHN9NbPBj414EztxEB+vnA/HqJkNvtw94fEiFmIlNuJN7MRBTN5NXievk9fJ6+R18jp5nbxOXievkzfIG+QN8gZ5g7xB3iBvkDfIG+RN8iZ5k7xJ3iTvvIY5840lt1cMB3ESF3h6yOXxdq8oIVZiI97EThzESTzHe36mz2zw40UsxEpsxJvYiYM4icm7yLvIu8brzUpsxJvYiYM4iQss463mRSzESmzEm9iJgziJC6zk7X4lZ+6xZk74sRIbca9/3v+smfuVM1tYM/f7WIiV2Ig3sRMHcRIXeJN3+s/5dOmaud/HSmzEm9iJgziJx3tet8/c7+NFLMTj7es7/efyePu+mv5zOYjnevVx3f7TfPvP8KyZzf290tdlesjlAk8PubyIhViJjXgTO/F4+3gziQtcP+JFPN6+f6aHXB5vH+P0kMvjXc1BnMT18cz6Pl7EQqzE483mTezEQZzEBZ4ecnkRC7ESk3eRd5F3esj5vJeaOeHHBZ4ecnkRC7ESG3F7z/xJzZzw4yBO4gJPD7m8iIVYiY2YvDrevhbTWy4ncYGnt5xn+jVzv3I+O6Vm7vdxECdxgaeHXF7EQqzERkze6SHn06Br5n4fJ3GBp4dcXsRCrMTj1eZN7MRBPN6+vtNDhqeHaN9X8xrmshDPfdLHNX3m8iaeNc/Pjpn1FevrMj3kshFvYicO4iQu8PSQy4t4vH2800MuG/EmduLx9v0zPcT6uKaHNM+sr5zPe6mZ9X0sxEpsxJvYiYN4vNVc4OkhlxexECuxEW9iJw5i8i7yCnmnh5yZjZpZ38dKbMSb2ImDOInbe57b1sz6Pl7EQqzERryJnTiIk5i887pl97WY1y2XhViJZ/2+N6aHnM8VqZndfbyIhViJjXgTO3EQJzF5p4ecZ8c1s7uPhViJjXgTO3EQj9eaCzw95PIiHm9f3+khl8fb99X0kMtOPPdJH9e8hrlc4Okz53lZzSyueF+X6SeXgziJCzz95PIiFmIlNuLx9vFOP7kcxElcH/v0k/PMtHz6yXk+WDO7+3i82mzEm9iJgziJCzz95HJ7z+c81MzuPlZiI97EThzESVzg6SeXySvkFfJOP+lnOjO7+9iJgziJCzz95PIiHq80K7ERb2InDuIkLvD0k8uLmLzTT/qZ18z6Pt7ETjzr970x/aTf957Z3cdGvImdOIiTuMDTTy4vYvJOP+lnNDO7+3gTO3EQJ3GBp59cHm/vkeknl5XYiMfb13f6yeX29vOdmd19XOD5naifjc7s7mMh7vX7eZDffjJc4NtPhhdxr9PPMmYW97ERb2InDuIkro9nFvfxIhbi8VqzEW9iJw7iJC7w9JPL493NRjzre7MTB3ESF3j6xuVFLMR9XP2+98zoPt7EThzESVzg6RuXF7EQk1fJq+RVOq7Z++fDtWvmbCWHjXgT0/kxXofOz6bzs+n8bDo/0x8uGzFdl03XZZN3k3eT18nr5HXyOnmnP1TfJ9Mf+vnCzOJKzX8z5//stZm5fbyIhViJjXgTO/Fc92xO4gJPH7i8iIVYiY14EzsxeZO8Sd4ib9H9VnS/Fd1vRfdb0f1WdJ8X3edF9/n0jX5mNDO3jxexECuxEW9iJz5e/Q0ncYG7bzxexEKsxEa8iZ2YvGu8q7nA8iNexLO+Nc86uzmJC6w/4kUsxEpsxJvYicmr4/XmAtuPeBELsRIb8SYerzYHcRIXeI83mhfxeLNZiY14+sywEwfYZ/1q7nX6veWZoX3cda6+Xt0rtN9fzUBfzdsHhgNrJq2fi1iIldiIN7ET8/p93vr955llvdz7+vEiFmIlNuJN3N5+/3lmWR8ncX08s6za7zPPLKv2+8kzy/pYiY14vNnsxEGcxOM998nMsj5exOOtZiU24k3sxEGcxAWefX15EZNXyCvkFfIKeYW80wf6/eGZfdV+73pmXLXfl55Z1rlXZ5b1cRAX+O7Z/t7Zs/1+2syjPg7iJC7wRi+qvYiFeNbv+2H25uVNPN6+B3bQ9yYxemA5eZ28Tl5XYiPexE5MXifX7PF+7T0zpY+dOIiTuMDz8/3yIqb15+f75TlXfQ9MH7jsxEGcxAWePnB5Efe56ve9Z6b0sRFv4vb2+94zU6ra9+H0gcv1eP1mqPQLbT7vCp8gHJSDcZijzgnOIThMATahKExLeGFxEA7KwThsDs4hOHAFiysQrkC4AuEKpj+c98ZPmArm4KYTnH+heP5QyaxWE2aBPUE5GIc+hPNW9QnOITgkh6IwP/dfEKpgfqrbXOBpHS/M0nMZp3m8UBSmfbywOAgH5WAcNgfnwBVsrmBzBc4VOFfgXIFzBc4VOFfgXIFzBc4VOFcQXEFwBcEVBFcQXEFwBcEVBFcQXEFwBcnS+a3ivNNzwiw99+j0lxeKwnSYFxaH7z2bE5SDcRjP3LDTZ14IDlPB1FaFBWbe9AuLg3BQDsZhc3AOwSE5cAWLpfMWhP8mBIfkUBTm7YYXFgfhoBzYc9+rvGFOYk4IDsmhKEx3eWFxEA7KYe7EmrA5OIfg0BXsKXRaze7uMmOlX1gchENXsGWCcdgcnMNUMNfndqQbisJ0pK0TFgfhoByMw+bgHIJDcigKzhU4V+BcgXMFzhVMR9o+YSqYg5u+s+cqTHfZcxmnoWybsDk4hz6Ee4tNQ3mhKMxvPC8sDsLBqIJ5JeNzgafVvDBLz2WcVvPC4iAclINx2BycQ3BIDlSB/H4cFgfhoByMw+bgHIJDcuAKFlewuILFFSyuYHEFiytYXMHiChZXsLgC4QqEKxCWyvek8oRZuu/RmVH9wuIgHJTD97zyhM3BOYzHJiSHojCtxqc2W7SACQflwBUYV2BcgQWH5FAU8Lz2BK5gs/SOdNSEonCHN25YHISDcjAOmwN77gzHDXMSY0JRmNcuLywOwkE5GIfNYe7EnBAckkNRuK1mCp1WE78JwkE5GIeuINYE5xAcksNUMNfndqQbFoepYPbCdKQXjMPm4ByCQ3IohBlU/cLiIByUg3HYHJzDVLAnTAV9cDOZqpETZrWYMAvohOCQHOYQ+srN7OkXFgfhoByMg1MF86om+wLPeOkXeulcE4SDcjAOm4NzCA7JoShMq3mBKzCuwLgC4wqMKzCuwLgC4wqMK9hcweYKNlewuYLNFWyuYHMFmyvYXMHmCpwrcK7AuQLnCpyld5LMJszSc49Oq3lBORiHzeGbzzshOCSH8cwNO63mhcVhKpjaUmmBNA6bA1eQXEFyBVkU6sdhcRAOXEGxdB7FrN60dx71BeGgHIzD5uAcgsM/eYrCvHZJn7A4CAflYBw2B+cQHOZOjAlFYVrNC4vDVDCFTqvJmmAcNgfn0BXUb0JyKArTkV6YCvYE4aAcuoJaEzYH5xAckkNRmI70wuIgHJQDV2BcgXEFxhUYVzAdqXqXzMCr1hzc9J2aqzDdpeYyTkMpmVAUpqG8MIcwV24aygvKwThsDs4hqYJ5VVNzgafVvHCWtt9cxm41X9gcnENwSA5FoVvNFxYH4cAVJFeQXEFyBckVJFeQXEFxBcUVFFdQXEFxBcUVFFdQXEFxBUUVzNjrFxYH4aAcjMPmQNI72bp0wiy9JhiHzcE5BIfv34WcUBTkx2E8MkE4KIepYGqTzQs4h+DAFQhXoFyBLg7CQTkYB65AWXr/ud+eMAd3/xfhoByMw+bgHIJDcigK+8eBK9hcweYKNlewuYLNFeypwCdMBd2eZsLVfjVBOLRnzS3WreYL7Vlzu3R3sTVXu1/IvNC/Tdm9LbvvfEE4KIfxTNXTd15wDsEhORSF6TsvLA7CQTlwBckVJFeQXEFyBckVFFdQXEFxBcUVFFdQXEFxBcUVFFdQVMGMx35hcRAOysE4bA4kvZ9eWzphlt4ThINyMA6bg3MIDsmhKMiPA1cgXIFwBcIVCFcgXIFMBTFhKuifpzP8avKb0B5ZE5RDe0QmbA7OITgkh6LQ7ekLi4NwUA5cgXEFxhUYV2BcgXEFmyvYXMHmCjZXsLmCzRVsrmBzBZsr2FyBcwXOFThX4FyBcwXOFThL54MJ5pXdTMuazH09HemFWWDukOlILwSH5FAUpiO9sDgIhzmEufmmI83D4Zmc/YJzCA7JoShMR3phcRAOyqEr0LnjpyO94ByCQ3LoCrRP7wzY2jxHnwnbL0wFNUE5GIfNwTkEh+RQFG7j+k1YHISDcjAOm4NzCA79T8DzSovC/YCVGxYH4aAcjMPmMFfBJgSH5FAU9MdhcRAOysE4bA5cwbS0+R19xna/UBSmpb0wnpwwq83BTXt6ITkUhWlPLywOwkE5GIfNgSuY9jQzCzPG+4WiMO3phcVBOCgH4zAVxATnEBySw1QwO2tecb0wFczOmldcLyiHuatmtfsZTzc4h/F0G7wflTtvTcx87ve/8H82reaFxUE4KAfjsDmwZ1rNC3NJ5kaaVjNhZnK/sDgIB+VgHDaHqcAnBIfkUBTWVBATpoKcIByUg3GYCmqCcwgOU4FNKArzGumFrmCeVc+n435BORiHzcE5BIfkUBSm1bzAFShXoFyBcgXKFUyrmYfDM+hr8zh3JnptnjPN6K7Nw7qZ17V53D4Du18IDnMIc7Gmu9ww3eWFxUE4KIdNFUzbmIfD81G4L0zbmKfY82G4XxAOysE4bA7OITgkh6IQXEFwBcEVBFcQXEFwBcEVBFcQXEFwBckVJFeQXEFyBckVJFeQXEFyBckVJFdQXEFxBcUVFEvv6525jNOEZhRg5oS/IByUg3Ggnz8zLPyF4DCeNaEoTKt5YSqQCfQTcGaGv2AcuILFFSyuYCUH+hk8o8NfWBy4AmHp/Vi4OQf3c+FuKAr3k+FuWByEg3IwDpuDc+AKlCtQrsC4AuMKjCuYvjNP5edzcm2eys8Ass3D1JlA/sJcxm4bM4P8hcVhbqScoByMw+bgHIJDcigK05FeWBy4AucKnCtwrsC5AucKpiPNw+4ZUX5hOtILi4NwUA5zgef2nw+Ci7kK02rmAfmMJ3+hF5iHwzOg/IXNwTkEh+RQFKahvNCHcMuZhjIPoWdS2eYh9Iwqf2FzcA7BITnUF9bMK39hcRAOU0FOMA6bg3MIDlNBTegKei+smVf+wlQQE4SDcjAOm4NzCA7JoTdtP5Vf9MG4JywOwkE5GIfNwTl02+gLvO4H6r5QFKZxvbA4CAflYBz6HOQNziE4JIeiMC+LXlgchINyMA5cwbx6yjkH09JeSA5FYRpXzv027SnnYk17eiE4JIeiMO3phcVBOCgH48AVTHvKuZWnPb2QHIrCtKcXFgfhoBymgj1hc3AOwWEqmJ01XeyGecFUs7PmBdMLwmHuqhuMw+bQnn73a93P0vXxTBN6/8s//WeFMPPKX1gchINyMA6bg3PoE9JvMq+ZV/5CUZhW88LiIByUg3GYCmyCcwgOyWEq6Is1A8/Wj1nXDDx/QTgoh6kgJmwOzmEqkAnJoSjM71n91HfNwPMXhINyMA6bg3MIDsmhKBhXYFyBcQXGFRhX0K1m/+bSd6vZvzm4bij7Nye+G8r+zZWbFz/9FHvNvPIXnEP098zF6u7yhaLQ3eULi4NwMKrAZ+m5pp4cZum5jPHjsDgIB+VgHDYH5xAckgNXkFxBcgXJFSRXkFxBcgXJFSRXkFxBcgXFFRRXUFxBcQXFFRRXUFxBcQXFFRRVMAPPX1gclMN0ZZ8wS/c9OvPKX1gchINyoJ8/M6/8BecwnpqQHIpCt5rdT2PXzCu/BUQ4KAeuQLgC4QokOCQH+hk8A89f4AqUpffvkOiE4JAcisL9WyQ3LA7CQTkYh82BKzCuwLgC4wo2V7C5guk7/Xx7zVjzXvd/6TuxH4yu+bjdL/Rl7KeKawaeX5hW80LfSGvut2k1LygH47A5OIfgkByKwnSkF7iC4AqCKwiuILiC4AqmI625D6YjvVAUpiO9sDgIh7nAc0bvX15bE5JDUcAfXzthcRAOysE4zMHNDp6G8kIhzLzyFxYH4aAcjMPmMCexJgSH5DBH2nei4s+unbA4CAflYBw2B+cw53pPSA5F4f4BthsWB+GgHIxDn4N+qL5m+vkLwWGkvef0/pXHmKAcjMPm4ByCQ3IoCvevPd6wOHAFxhV0R9oyJ3Fe1chU3X1ni00oCt13tswJ6b7zBeHQN5L4BOOwOTiH4JAcisJ0JJlDmI70gnBQDsZhc5jTO/f1/VOyc6T3b8neIByUg3HYHJxDcJiDG+k0lBeEg3IwDpuDcwgO/+Tpk6hzj85LnBcWh6lgdvC8xHnBOGwOziE4JIdCmI/p3f24fc1c9BeEg3IwDpuDcwgOyaEoLK5gOpJObdORXlAOxmFzcA7BITn0pu3349fMRX9hcRAOysE4bA7OYc6BTkgORUF/HBYH4aAcjMPm4By4Ap0KbEJRsB+HxWE8MWFWm4Ob9vRCUZj29MLiIByUg3HYHJwDVzDt6V7TaU83THt6YXEQDsrBOGwOU4FPCA7JoSjMC6Z+Xr9mlvoLXYHNHT8vmF4wDnNX3dWcQ1CYl0X9iH7NXPS2udrzSuhK512cF5xDcEgORWFeI72wOMyPtpHOa6QXjMPm4ByCQ3IohJmL3v14es1c9BeEg3IY6ZqQOFUz/fwF4aAcjMPm4ByCwz95+qboZ/xr5qK/sDgIB+VgHDYH5zAVxITkUBSm1bwwFeSEqaAmKAfjsDl0Bf24fc2Q9BeSw1TQL0pmfPoLi0NXMC+pZ3z6C8Zhc3AOwSE5FIVpTy8sDlzB5go2V7C5gs0VbK5g2tO8BJ0PDt57bstpQnuu3LSae5NPq3khKUwPmUY8c9F737A5OIfgkByoX8/08xcWh/HcoByMw1QwN0U6LxAckgNXUFxBcQUlHJSDcdgcuIIi6Yw1r3mRNWPNX1AOxmFzcA7BITkUhfml6wWuYHEF03f6qfya6efdT+XXzDjveWdhZpy/0CdxftudGecvLA59Evvp8poZ5y8Yh83BOQSH5DAV9K08n/z7hcVBOCgH4zCnd87B/Go1vxnNWPMXFgfhoByMw+bgHObgemPM8PIXFgfhoByMw+bgHP7JMydxbstpDjfMa5d54DLDy18QDsrBOGwOziE49A07v2vO5wG/ML+BvbA4CAflYBw2hznXc4HntcsLyaEozJ9he2FxEA7KYc7B3DvTkV5wDsFhpLNL5oXMvLsyY81fMA6bg3MIDsmhEGas+QuLg3BQDsZhc3AOwaFvsXkIPWPNuwcL1gwv7x4sWDO8/IU5iT5hc3AOcxJjQnIoCtORXlgchINyMA6bg3PgCoQrEK5AuQLlCpQrmI40YwozvPyFzcE5BIekML1q3n+beeXV/wZqzbzyF4JDcigK8ybzC4uDcGDPdKSZp5h55S84h+CQHIrCdKQXFoc+iTnS6UgvGIfNYSqQCVPB3KPzeueFojC/Tb0wFcytPK+EXlAOcxnnKsxrpBecw1Qwt/+8RnqhKMxrpBcWB+GgHIzD5uAcuILkCuY10jwimSHpPUMCMwq95+F93CY0Z/Q2oRsKYSaZ1zxvnEnmPY/OZ175C8EhORSFeVUzz8BmXvkLwmE8U8F0lxc2h6lAJwQvkByKgnAFwhUIVzBv3LxgHDYH58AVCEu7bfzmKsy48RecQ3BIDkWhO8UXFgf2zC9DMz4wHy/8hc3BOQSH5FAU5vXOC31fz8jBzCt/QTkYh6lgzs50l3lEP581/IXkUBSmu8yz9xlr/oJwmApsgnHYHE4F3v/eec1Y8xeSQ1Ho7vKFxUE4KAfjsDlwBcEVxFQwd3xMBXPH53jmKuTcVXPY6RySQs3tMgvULDCXpDYH5xAcksPcln0S55OMv7A4jCcmKAfjMBXkBOcFgkNy4AoWV7C4giUclINx2By4gsXSbhs/v8E4bA7OITgkh6LQLz2+wJ7pIS/0SZxH9DOI/IXNwTkEh+RQFLq7fKHv63l9MIPIX1AOxmEqkAlTgU4IDsmhKOypYI50Lw7CYW6kmmAcNoepYE8IDsmhKPiPw+IgHJSDcdgcuALnCpwrcK4guILgCqa7zIPrGVH2eek+H7Hs8yhzppJd5pL065Av9Grza+zMK39BORiHzcE5BIfkUBTqx4ErKK6guILiCoorKK6guILiCgoVyMwrf2FxEA7KwThsDs4hOCQHrmBxBWsq0AnCQTkYh83BOQSHotCvan79LpvMILL3b64y48ZfCA7JoSjc9vSbsDgIh/HsCcZhc5gKfELwAsmhKBhXYFyBcQXdnr5gHDYH58AVGEu77/xsCu3u8gXnEBySQ1Ho7vKFxYE93V2+MCcxJ2wOziE4JIeiMN3lhcVh7sS5Xaa7vGAcNoeuQOdUzWuXfjNOZsL4C0VhOtILXYHOxpiO9IJymApiwubgHKaCuf2nI71QFKYjvbA4CAflYBw2B+fAFRRXUFTBjDV/YXGYCnzCVBATxlMTZrW+cjOV7P0AVmYq+QvKoQ+hn8LJTCV/wTkEh+RQFGRRBTJLrwmbwywtE4JDcigK3Wq+sDgIB+VgHDYHrkC5AuUKlCswrsC4AuMKjCswrsC4AuMKjCswrsC4gs0VbK5gcwWbK9hcweYKNlewuYLNFThLbxOayzhNyOYenVbzQnIoCtNqXphmN0uHcFAO45kbdlrNC85hKtgTkhcoCvnjwBUkV5BcQbeaL2wOziE4cAXF0u4hv+mwM1T8heCQHAphhoq/sDgIB+VgHOYkxgTnEBySQ1GY1y4vLA7CYe7Ekd5Wc8Pm4BymgprQFfQjYJmp5Bf6jZsvLA5dQT8/lZlK/oJxmAp8gnMIDlOBTCgK05FeWByEg3IwDpuDcwgOXIFyBcYVGFdgXMF0pB59lBle9j0HN31nz4mf7rLnyk1D6efOMrPHXzAOcwhzsaahvBAckkNRmO7yglAF86pmXnHNuPEXemmfyzit5oWiMK3mhcVBOCgH47A5OAeuILiC4AqSK0iuILmC5AqSK0iuILmC5AqSK0iuoLiC4gqKKyiuoLiC4gqKKyiuoLiCogpmRPkL04R0wiwtE5JDUZhW88LiMM3OJigH4zCekU6reSE4TAX3e4oWkB+HxYErEK5AuIJ5G+gF5xAckgNXoCztHvLrN8lkhoq/kByKwvya9MLiIByUA3vm16QX5iT6hOCQHIrCdJcXFgfhoBzmThzptJoXnENwmApywlTQ3WXGjb+wOAiHrqCfb8uMG39hc5gK9oTgkBy6gpjbfzrSC4uDcFAOxmFzcA7BITlwBckVJFeQXEFyBdORYm6+6UgxBzd9J+bET3eJuXLTUGL26TSUFzaHOYS5WNNQXkgOhTDjxl9YHBQVzByx9/M5mTniL/TS/fBRZo74hWk1LywOwkE5GIfNwTkEB65gcQXCFQhXIFyBcAXCFQhXIFyBcAXCFQhXoFyBcgXKFShXoFyBcgXKFShXoFyBcgXGFRhLbxOSCbP0mlAUptW8sDgIh2l2OsE4bA7jGem0mheSw1Qw3zNv6dwF5i2dF4QDV+BcgXMF3Wq+EBySQ1EIriBYenpI5WyS0yg+LvBpEx8vYiFWYiOm9c9Llo/n1O0JyaEozCuWFxYH4aAcjMPcfyOdBvNCcEgOU0E3spkR9n5qKjMj/AXhoBymgpqwOTiHqcAmJIepYML0oX4wLzNk/AXhoByMw+bgHIJDcigKwhUIVyBcgXAFwhVMH+pn8TJDxl5zcNNt+sGvzMCw95NjmRlh79EAmRnhLziHOYS5WNNGXigK00ZeWByEg1EF81qm5prOa5kXZum5jNNgXlgchINyMA6bg3MIDsmBK3CuwLkC5wqcK3CuwLkC5wqcK3CuwLmC4AqCKwiuILiC4AqCKwiuILiC4AqCK0iuILmCZOn0oLl1ugfFb27R7jRfWByEg3LoRifDm9iJRzLGbjNfKIT5qOSYH2Y9U3y/v0eKP1ZiI97EThzESVzg9SMm7yLX6Rk1L6J7Pvjx6QsfL2IhVmIj3sS0/nlh8vGcLptQFPTHYXEQDsrBOGwO3mFPCA7JoSjYVOATpoKYIByUg3GYCuZIzTkEh6lAJxSF/eMwFdQE4aAcjMPm4ByCQ3IoCv7jwBU4V+BcgXMFzhU4V9B9J9Zsju47seZm7O4Sa65c95BYc0m6h3yhV1tzfSI4JIei0D3kC4uDcFAOxmFz4AqSK0iuILmC4gqKKyiuoLiC4gqKKyiuoLiC4gqKKphR4i8sDsJBORiHzWEqiAnBITkUhfXjsDgIB+PQXUOHZ+XePjMi/AXhoByMQ7cmG3biIB5JTSgK05peaH1PXUjPB7/vVyU2YnIruZXcpyl9XGD7ES9i8hq5Tp+peZ+9R4I/XsRCrMRGvImdmNdP4j5dM+owk8BfWByEg3IwDpuDc+j7bd5fnEngLxSF+HGYCuYExVSwJygH47A5TAVz+0/feSE5TAXd32YS+AuLw1QwN/n0nReMw+bgHIJDcigK03deWBy4guIKiisorqC4guk7MwAwH5cc82R/PhQ55qn2fPRxzMP8mR6OeTw108NfSA59CPPseqaHv7A4CAflYBycKlizdF/TGQv+wiztE4SDcjAOm4NzCA7JoShMU3mBK1CuQLkC5QqUK1CuQLkC5QqUKzCuwLgC4wqMKzCuwLgC4wqMKzCuwLiCzRVsrmBzBZsr2CydHjS32/SgmZuYqeAvKAfjsDl0o5s7x4M4iUcyN+u0mRcWh9HXBMX3hxFvYnIHuYPc/QbO5X4D5/EiFmLyJrlOz6jZvT0f/LEQK7ERb2InDmJevz6egeGY2YIZGP6CcFAOxmFzcA7Boe+3eRY/A8MvTEN5YXGYCnTCVGATjMPm4Bymgj0hORSF6TszTTNzxV8QDlOBTzAOm4NzCA7JoShM33lhcRAOXIFyBcoVKFegXIFyBdN35sXCTBzHDADMXHHMI/uZHo55qj3Tw1/o1eah9EwPvzA95IXFQTgoB+OwOTiH4MAVbK7AuQLnCpwrcK7AuQLnCpwrcK7AuQLnCoIrCK4guILgCoIrCK4guILgCub1zp47fl7v3DCvd15YHISDcjAOzuF0jXn1NZPEsW9QDsZhc3AOpzXNa7QeF/64HusMC8e+YXEQDqOPCUbfv4mdOIiTmNz9ds3jRSzESkzeRa5+G6d/o9aeAv5YiY14EztxECcxrX+ayMdzumqCcFAOxmFzcA7BITn0/dYjIjpjwV9YHIRDV9DDCTpjweFT9bx2ecE5BIeuoH8N1ZkRfmH6zgtzDnKCcFAOU4FN2BycQ3BIDkVh+s4Li4NwUA5cgXMFzhU4V+BcgXMF03d87r/pOz6bY7qLz5WbHhJzSaaHvNCrxVyf6SEvLA7CQTkYh83BOQSH5MAVFFdQXEFxBcUVFFdQXEFxBcUVFFdQVMHMCH9hcRAOysE4bA7OITgkh6mg7/j56OMvLA7CQTkYh80hKPSby/1eqc4kcfS/O9eZJP7C5uAcgsNpTf2OqvYg8eNuTY9HYhOEg3IY/Z6w6fudOIjJreQ2cvfbNY+FWImNmLxGrtNnsuZCnWbysRFvYicO4iQusNP600RirtA0kReUg3HYHJxDcEgOc8PNAU4TeWFxEA5TQU3oCnpqQGdi+AvOITh0BTlHOo3nhmk8L0wFPkE4KIepYG7saTwvOIfgkByKwjSeFxYH4aAcuILiCoorKK6guIKiCmbkOPr5tM7IcfTzdp3B4uhn59rjw1n3W5K4wKdpfHzu0n4IrzMSHP1AXWfw9wtFYX5FemFxkLPYFHJe1XxsxCOpCc4hOLS+n2VrT/2+7z/t4+NFTG4lt5L7tI6PnTiIk5i8Rq7TFnJ6Zk/wfpzEBe4W8XgRC7ES0/rdOh736bpXbl6EvJAcisK8CHlhcRAOyqHvqJ4d0BkD/oJzCA5Twdyf0z9q7s/pHy8sDsJhKphbcfrHC5vDVLAmBIfkMBXM9Zr+8cLiIByUg3HYHJxDcEgOXEFxBcUVFFdQXEH3j/zNFuj+kb85uO4S2Y8hdeZ7sx9j63zqcPTIhM6w7xc2B+/vsQnBITkUhX7d8YXFQamCNUvvCcFhlvYJRUF+HBYH4aAcjMPm4ByCA1cgXIFyBcoVKFegXIFyBcoVKFegXIFyBcoVGFdgXIFxBcYVGFdgXIFxBcYVGFdgXMHmCjZLuwfNLw4z+Ju/G4qC/zgsDsLhNDqf+/A0mo838UhuCA7JYfT9E6Nne9/3ny7zsRCTO8gd5D4N5uMgTuICJ3mTXKdnZP+LGJ3PFc51Q3BIDkWhW8YXFgfhoBz6huhH+DqDvl9wDsEhORTCDPpmP/bXGfTNfsas87nC2Q+Ctad+c99vMeJNfE7eXLWe+H18msrHi1iIldiIN/EcXk0IDsmhKEzXeWFxEA7KoU9wP1zWGfX9Qlcgc7jTdV5IDl1BPy3VGfX9wuIgHJSDcdgcnENwSA5cgXEFxhUYV2BcgXEF03X6Sa7ORPAXgkNyKArTdV7oW2BO9XkRFHV5EztxECdxgU9b+ngRC7ESk9fJ6+R18jp5nbwxB7YnzKmd3RNzAmf3xOYwJ3Du6QgOyWFO4Hjyx2FxEA7KwThsDs4hOCQHrqC4guIKiisorqC4gulUOhtpOtULwSE5FMJMDH+he8flvoB7eBZeE4rCvLTpp+I6475fEA7KwThsDs4hOMwBTDnTi/o5qc64b/ZzTp1x3y8IB+VgHDYH5xAckkNRmF7UT0R1PlP4C8JBORiHrsDmvE8vsjm904temApyQlGYXvTC4iAclINx2Bx6u9pwECdxgfePeBELsRJ3m5jrOu3pshMHcRIXeNrT5UXcx2w3KAfjsDk4h+CQHIrCtKkXFgeuIKaCOfZpYC9sDs5hPHN/TTOyuTjTjF4wDpuDcwgOyaEoTDN6YXHgCqYZ2dy604xe2BycQ3BIDoUwc8VfmAp8gnBQDsahK5iXjvNZxV/oCuY11XxW8ReKwup76vIiFuKRyIS+IccxDef+D8L/1bSVF4JDcigK01ZeWBzYM23lhT4Z/ahRZ2r4C84hOCSHojBt5YXFYSrYE5SDcdgcpoK5UPMSZx43ztTwF4rCvMR5YSrICcJBORiHqUAnOIfgMBXMjTe/mt0wv5q9sDgIB+VgHDYH5xAcuALnCoIrCK4guIJpM/NsbyaNc57gzTxx+lyFec0zD7lmUDjngeIMCn/BOPQhzLOwGRT+QnBIDkVhOssLQhVMy5hfkGcC+Auz9FzGaRkvFMJMAH9hcRAOysE4bA7OITgkB65gcQWLK1hcweIKFlewuILFFSyuYHEFiysQrkC4AuEKhCsQrkC4AuEKhCsQrkC4AmXpNKH54TWfH5zztHQ+JfgLRWFazQuLA/3smQ8T/oJxaM88e52PGf5CcOgK5uHgfMzwW2D/OCwOXMHmCjZXsDcH5xAckgNX4Czt36XmmUUPDX/sxEGcxAU+3ePjRSzESkzeIG+QN8gb5A3yTp+ZB5ozJZxx/5c+afNIcmaBvzCXzScEh+TQJ22et80s8BcWB+GgHIzD5uAcgkNyoAry9+OwOAgH5WAcpoKc4ByCQ3IoCtOBXugLu4fPBbyWaSzzkHE+YfgLyaEXnueKM0r8hcWhD20esPUo8X2W2ZPEH2/ic5/E/e/H0ffGDAt/YXEYh01QDsahT988iOth4fsYvWeFP07waS8z4q09DvyxEhvxJnbiIE7iObw57mkrLywOc3hz2qetvNCHNy8qZyj4C86hL+K8KJ3PF/5CUZhXMC8sDsJBOUwFc7nmFcwLziE4JIei0D1o3jDoieH59wLaE8Mfb2InDuIkLvDpNR8vYiEmb5J3GtD8ZjofNpzzpkdOm5lnZzlt5oU5ibOvps28oBzmJM7VnjbzgnMIDsmhEGbE+AtTQU0QDsrBOGwOzqHPa1+rHh2eT5vQnhz+WImNeBM7cRAn8TmmmqdxMzL8hcVBOkxN/cLlC9ZBJ2wOziE62ITkUBT0x2FxEA7KYSrYEzYH5xAckkNROK985kMitCeG50NatD+I+ONN7MRBnMQFPg3o40UsxOTd5N1zcDFhDm5uwD2HMNfUfxz6JM5TlZkS/oJy6JM4j0tmSvgLziE4JIei0L8jfWEqmNslhINyMA6bg3Po8zorn+YyH/CjM/xba+62VA7GYXNwDsEhORSF+nFYHLiC4gqKKyiuoLiC4gpqKpibsqaCc6Q2c8LV/9zQZk64+pmOzYcKf6E9/UzH5kOFvxAckkNR6JcxX1gchINyMA5cweIKFlewuILFFQhXIFyBcAXCFQhXIFyBcAXCFQhXIFyBcgXKFShXoFyBcgXKFShXoCy1vpNteFZeEzaH+X6dEBySQ1HYPw6Lg3BQDnMEe8JUMPfeNJ0XgkNyKArTjl5YHISDcjAOU8Hc8NOOXggOyaEoTDuS2RfTjnTO+7SjF6aCmGAcNgfnEBySQ1HIH4e+2HOqT9v6WImNeBM7cRAn8flx0+88Wc8Zf7yIhViJjXgTO3Efs96QHAphBoy/sDgIB+VgHDYH5xAcpgKdUBSmg72wOIzHJ8xqMSE5FIXpRi8sDsJBORiHzcE5cAXTjfrhj80HF78w3eiFxUE4KAfjsDlMBXtCcEgORcGmgpqwOHQF/dDM5oOLv2Ac+p667MQBnpbVT9msh4/nQz1tPln4/Q/O/9W0lReEg3IwDpuDc/gnT3Lok2FzE01beWFxEA7KwThsDs5hKrAJyaEoTFt5YSqYCzUvh2xu8Hk59IJx2BymgrkL5+XQC8mhKMzLIZudOC+HXhAOU8HcePNy6IXNwTkEh+RQCDNO/IXFQTgoB+OwOTiH4NAV9HMpm08wrn7KY/M5xdWPYmxGj6ufY9h8AHH1AzSbOeQvFIXpLP1cxmYO+QvCQTkYh80hqIJpGf2Ux+aThb8wS8cE5WAcNgfnEBySQ1GYlvHC4sAVGFdgXIFxBcYVGFdgXIFxBZsr2FzB5go2V7C5gs0VbK5gcwWbK9hcgXMFzhU4V+BcgXMFztJpQvPDa2aSa889Oq3mBeOwOTgH+tkzk8dfoJ9+M3lc04hn8vgLwqErmEY+k8ffApuDc+AKkitIrqB+HBYH4aAcuIJi6ekh89HTpqeFfLyIhViJjXgTO3EQJzF5F3kXeRd5F3kXeafPzCuyGVWej7CxGUiej2mxGUj+Qp+0fvJoM5D8BeXQJ61/r7YZSP6CcwgOyaEoTAd6YXEQDsqBK1CuQLkC5QqUK1CuYDpQP8e0GUj+gnBQDsZhc+gLOye038yZn4T9ccMfG/EmduIgTuICO61/2sbHU3dNUA7GYXNwDsEhORSFaS797pPNpwx/QTgoh66g36Gx+ZThirlLp+28EBySQ1cQczNP23lhcRAOcw5ygnHYHKaCuXjTdl5IDkVh2s4Li4NwUA7GYXPgCoorKK6gqIKZXv7CVBATpoKc0J5+69Lmk4mr3+S1+TDi6qd6Nh9G/AXh0IfQ/zjN5sOIv7A5OIfgkBSm89wKpr/08ymb0eMvzNI6wTkEh+RQFKa/vLA4CAflYBy4AuUKlCtQrkC5AuMKjCswrsC4AuMKjCswrsC4AuMKjCvYXMHmCjZXsLmCzRVsrmBzBZsr2Cw9TWj+mIvNxw9Xzi06neaF4JAcikJ0p5uFYxEL8UjmZp0288LmMHqfEPT9SVzgJHeSO8nd7808NuJN7MTkTXL1+y7zvlYPC3/sxEGcxPVxzwl/vIiFWInndOWEzcE5BIfkUBSmobywOMz9VhOUg3HYHLqCfopqM2Zc/dzTZsz4C0VhussLXUE/3bQZM/6CcjAOU0FMcA7BYSrQCUVh+s4Li4NwUA7GYXNwDsGBK1CuwLgC4wqMK5i+U3MfTN+pObjpLjVXYXpIzWWcttGPYW0+fPgLxuHPIZy/fzjBOQSH5FAUzgscBKEKfJaeC+zOYZaey+jJoSjEj8PiIByUg3HYHJwDVxBcQXAFyRUkV5BcQXIFyRUkV5BcQXIFyRUkV1BcQXEFxRUUV1BcQXEFxRUUV1BcQVEFPTWMcBrnPMvo0WCZD5K3HgBGKArrx2Fx6E43C/cvSY+NeCQ2wTkEh9HvCYXvlx/xIia3kFvILZvYiYM4icmr5Do9w29tpzF8nMQF7gfYjxexECsxrd/vzj6e0xUTgkNyKAr7x2FxEA7KYe63nLA5OIfgMBXUhK6gn2ObT0N5YXEQDl3BmlvRjcPm4BymAp+QHIrC9J01F2/6zgvCQTkYh83BOQSH5FAUkitIriC5guQKkiuYvrPmPpi+M8+efbrLPHv26SFrLuO0jTV7c9rGC85hDmGu3LSNFwqhx4gRFgfhYKig54P/vOf7m5AceulpPDEd5YXFQTgoB+OwOTiH4JAcuALhCoQrEK5AuALhCoQrEK5AuALhCoQrUK5AuQLlCpQrUK5AuQLlCpQrUK5AuQLjCowrMJb2I6J5eRDTg6YrxnSaFxYH4aAcutPNwv2uzGMnHolOSA7/v7Z325UmN5J030XXfRE8OJ3sVxk0GpoezYYAQWqo1RsYDPTuk0lLMkwlhNNXkv+N5F9VLQvPOFjw4GQ0AthM3+k390Lh8fe9UzTiRDEdu9CxCx27KMWV4nbHvZ80Yjqu0rHeniHoXissA1P5CssY0AhgGQMCQ2RIDJkBN0QBFAZlqAyNAE2VAcgADzlsJuG3oamCmd9eOCzojfa64RkXil8HEQyXVLgKpoArXGVAZMAxMiAzCEP/lRiG76XBgoGYXhk843bHb38RDHJV2AvGoivsZYAw4Bifv1eGytDPJKZYe5WwYFysFwnPOFL8Plvp898XipXiSnG747d5zDhQHCnuPw+DAxXOMUAYCoMyVIZGAOcY0C8i+ta9ePgGZIBLlTODMCADAShDZWgE8J4BgSEyJIbMIAycgXAGwhkIZ1A4g8IZoJWDCd2KVs6AzCAMhUEZ+i3Qn7y+67DETxwpThRnioXiQrFSXClud/y2oxnTcSsdt9JxKx230nErHRc+hMncCh/C9GuF2wjuXLjNgH4CMedb0cIZIAz9BGI2uKKFM6AytBsavGhAYIgMiSEzCENhUIbKwBkEziBwBmgIYaKpwakGZAZhKAzK0C8slN8elDEm3MuIZ5wpFooLxUpxpbjdMRo2mAhvaNgMiAz4TQWQGfCbFFAYlAFntQIaAexpQGCIDIkhMyAD/B7Y0wBlqAyNAPY04JVBxpxALyXO+omF4kKxUlwpbnf8dp8ZB4ojxYliOm6h48J3+papucF3MJ/Z0IfCfGZDH2pAP4mYz2zoQw3IDP0kYj6zoQ81QBkqQyNAg2hAYEAGuF3QIBqQGYShMChDP684BW/ryShZ7PXDM84UC8WFYqW4UtxGLBcsp3wgMEQG/KYGyAz9N/WrJxcsZ4Ay9LPaf5RcsJwPwHIGBIbIkBgyAzKIgMKgDJWhEaDvNeB980b8tu5A4RMLxYVipbhS3O747UAzDhRHihPFdNxEx4X39Ek/ueA9fZpOLjhMX3wnFxxmAE6iAhJDZsBJxNWGwwxQhsrQCOAwAwIDMsBPQANoQGYQhsKgDP3mxU3VzSXgDHQTGXGhWCmuFLc71oviQDHpa6K4511x+8FWBhQGZagMjQC2MiAw9DNXcWPCVgZkBmFABgmADHDDoH0zoBGgnzUAGeCXouUzIDFkBmSAq4KWzwBlQAa4MdHyAQTY0IDAEBkSQ2YQhsKgDJWBMwicQeAMAmcAG+qTVBJgQ32SSgLMps8kSYCl9KkoCRjB6ZNHEjCCMyAz9J/QJ2gkYARngDJUhkaAhs6ASBmgBdMnaCTARQZAWgCVoRHAXwYEhsiQGDKDMBQGziBzBpkzEM5AOAPhDIQzEM5AOAPhDIQzEM5AOIPCGRTOoHAGhTMonEHhDApnUDiDwhkUzkD5oNpfErj34EENtyicZkAjgNMMCAzd6XCz1ERxphgHwc0KmxmgDDh8BbT779tFcaCYjt3o2I2O3Zs4Iy4UK8WV4vu4vf53xi/NhFu/V/LOuFLc7vjtCjMOFEeKE8Wk/26XzPh9ukIftJReAXxDZWgE3UMmBIbIkBhyB/zYbigTCoMyIIMIQAbdQ3qh8A2BITIgA/zSlBmEoTDglmmAytAIMjIQQGCIDIkhMwhDYVCGytAIhDMQzkA4A+EMhDMQZFAByAA/rrtL+NyZ3UMCnude5/v6zwpAGApD/wkBV67bxoRG0HtOEwJDZMiUgUIaF1grA6RxGevFEBgiQ2LIDMJQGJShMnAGjTNonEHjDBpn0DiDxhk0zqBxBo0zaJRBrxS+ITBEhsSQGYShMChDZeAMAmcQOIPAB32bUELTJcGD0J5NcJoBgSEyJIbudBdiobhQjIMUQGVoBLCZPmMnvRp4/H2KFCeK6diJjp3o2EkprhS3O84XxXTcTMd6e0bqI+TSNxQe8dsXZhwojhQnijPFQjHpvxsiM8bpwtX6OAWgXAyBITIkhswgDP1+Q4cqwVAGVIZGAEPpY6iSYCh9LE8SDGVAYsgMPYOIX6qFQRkqA85B99H08Z0PBAZkgDsevjMgMwhDYVCGytAI4DsDAgNn0DiDxhk0zqBxBvCdiOcBvoPRmgx36fMpkuEhGKrIsI0+8fYCZagM/Sf00XvJsI0BgSEyJIbMUCgDtF36LJxkOMoASCdAZEgMmUEYCoMyVIZGAFMZwBkkziBxBokzSJxB4gwSZ5A4g8QZZM4gcwaZM8icQeYMMmeQOYPMGWTOIHMGwhkIZyCcgXAGwgd9m1DCEGCGB/V5TslwmgGJITMIw9vpMGrYK4BnXCnGQXCzwmYGBAYcvgDS/fdvl5mxUEzHVjq20rHfBjPit7/MOFAcKabjVjrW2zNSRvw2hhlHihPFmWKhuFCsFLM+zle/QoKGyIDAEBkSQ2YQhsKAG64BKkMj+DjKB3oGfQJaBI7SV8yKwFEGZAZh6Bn0WV0RNFgGVIZG8DEeBQSGyIAMEiAzCENhUIbK0AhgPAMCQ2TgDBJnAOPpc7ciMJ4+9SoCe8m4JG8TSYKz2xssIxaK+62SEeOPcW3w/A9IDJlBGPr9iLR6S2XEleJ+kM/R0VAZEBj64QWXuaT770umWCimYxc6dqFjv71jxG/rmHGgOFJMx1U6VvcEvOFQuxsE9xYaHQMCQ2RIDJlBGAqDMlQGzqBxBo0zaJxB4wwaZ4BGh+COQKND8KvhJH0qUwqcpE8+SoFf9LlDKfCLAV2tL+yUAr8YoAyVoR+nT/AJKnknBIbIkBgygzAUBmWoDJxB5AwiZxA5g8gZRM4gcgaRM4icQeQMImeQOIPEGSTOIHEGiTNInEHiDBJnkDiDxBlkziDzQbuXoH3XK3xn3O64d4RGHCiOFCeKM8Wk3+1lxEg8ASpDI4DBDAgMkSExZAacugwoDMpQGZBBf2pQ2Bv6vK2gsHdCZEgMyABPGnpCAwqDMiCDCGgEMKUByADPLUxpQGLIDMJQGJShMjQCmNIAzqBxBo0zaJxB4wxgSpjaRWVwwMws6n8DZj8VpoS+sn58qAEKgzL0n4AZU9T/DoAPDQgMkSExCGUAg8GUKwp7B8BgMMuKwt4JkSExZAZhKAzKUBkaQeIMEmeQOIPEGSTOIHEGiTNInEHiDBJnkDmDzBlkziBzBpkzyJxB5gwyZ5A5g8wZCGcgnIFwBsIH7W0cdMlR9Rswoa1wmgGRITFkhu50uHN6Y2bESjEOgpsVNvMB2MyAfnhMqfY9gsff9wbNiDPFdGylYysduzd6RtzuuHeERhwopuNWOtbbMxIGu3v57owDxZHiRHGmWCguFLN+pbifLsyBo6Z3QmCIDIkhMwhDYej3G6bXKwxlQCOAoQxABhmADASQGDKDMCCDAlCGytAI4DsoJKjwnQGRARkoIDMIQ2FQhsrQCOA7AwJDZOAMEmeQOIPEGSTOAL6D4VqUBQdMe6P4N2BCHCW+AfPzqOoNfX2qoKp3QiOAbWAOD1W9EyJDYsgMwqCUAdoumMtFue4ESOMywlEGZAZhKAzKUBkaAUxlQGDgDJQzUM5AOQPlDJQzUM5AOYPKGVTOoHIGlTOonEHlDCpnUDmDyhlUzqBxBo0zaJxB4wwaZ9D4oG8TSpgURS1vwJw4KnYnZAZhKAzd6TLiSnG7Y9gM5tpRrjshMuDwDZDp74XiQjEdO9CxAx07XhQHiiPFiWI6bqRjdc/Ao4yC3BEnijPFQnGhWCmuFJN+b4iM+H26IubAUYc7ITFkBmEoDMpQGVqH/tSjDndCYIgMyAB3kiADnC0RhsKgDMhAAI2gXAyBARlcgMSQGZBBARQGZagMjUAvhsAQGRJDZuAMlDNQzkA5A+UMKjLA89B9J2LaG+W6ERPiKMqNmJ/vRbmvv8G90y6GwNB/AqbKe8HuDZlBGAqDMrSZQUFBbuxzuQUFuRMgLQBhKAzKUBkaQTeVCYEhMiQGziBwBoEzCJxB4AwCZxA5g8gZRM4gcgaRM4icQeQMImcQOYPIGSTOIHEGiTNInEHiDBJnkDiDxAftJtSblgWVurHPiRfU404oDMpQGbrTpR53oxlxoBgHUUBiyAw4fAUU+nuluFJMxy507ELH7gYz4kRxplgopuMWOlb3jIIT2C1jxIniTLFQXChWiivF7Y67VYyYjlvpuJWOW+m4lY5b6biVjtubJrHPqxcU5caIxx0eE3FvwEkifj+cZIAwFAZlqAztBpTeTui3eu/0FpTeTkgMmUEYCoMyVIZGAMMZwBkEziBwBoEz6IbTFxq84kKxUlwpbnfcvWbEgeJIcb/ADXGmWCguFCvFleJ2x91hRozfXACRITFkBmEoDMpQGRpBvhg4AxhRrz8oKOmdkBmEoR8n4XyhYdOnUArKcyckhswgDIVBGSpDI0DDZgBngIZNL0YoKM+dkBmEoTAoQ2VoBGjYRFxTNGwGRIbEgAzw9KFhMwAZ4A5Hw2ZAZej3FC4CzOoTB4pxEAFACpca9vMBNGQS/gaO06d/Sy+5jYqz2Z0EcYRdQDhemUEYCoMyVIZGAFMYwMeBKfR55RJhCgMygzAUBmWoDI0ArZCMX4pWyIDIkBiQQQQggwQoDMpQGZBBv7aov50QGCIDLlUDZAZhQAY4iTCJAZWhEcAkBgSGyJAYMoMwcAaZM8icQeYMhDMQzgDG0ne/LKi/jX1qvKDKNgou48ck+i0ePybxgcCQGMrtZqiyjYILjGd8QGCIDImBfC6qMBQGHAf3Dp7xAY0AnRfB7VLJ51ByOyExcAaVM6icQVWGykBOi5LbCZxB44N20xDcor3FgRj1siMOFEeKE8WZYqG4UKwU49QJoBHAUwYEhsiQGDKDMOAuKwBlqAyNAJ7SZ9kLKm1jn2UvqLSdkBgyAzJogMKgDJUBGeDswFMGBIaeQZ+mLwmeMiAzCENhUIbK0AjgKQMCA2eQOYPMGWTOIHMGmTOAp/SZ0ZLgKX3atyQ4B1rgCQ2PgusD5xgANVwsNDwGNAJ4yoDAEBkSQ2YQhsLAGRTOoHAGyhkoZ6CcgXIGyhkoZ6CcgXIGyhkoZ1A5g8oZVM6gcgaVM6icQeUMYEoFtz9MaUAjgCkNCAyRITEIw1s644lBBwmt84xu0IDEkBmEoXvThVgprhT3g6CLgVrcCYGhHx4NLtTifv6+O9OIhWI6dqBjBzp2N6VP3D1pxIHiSDEdN9Kxus/gpYny20/cXWbEgeJIcaI4UywUF4qVYjpuouNmOm6m42Y6bqbjZjoubKVP6BeU28ZebFBQbhv7vH9BUW1U/A0aJAMiQ2LIDMJQGJSh3+p9Lrqg+HYADGdAYIgMiSEzCENhUAbOoHAGyhkoZ9ANB43hXpg740yxUFwoVoorxe2Ou9Gggd4Lc2ccKU4UZ4qF4kKxUozfjKcYBvMBGMyAwBAZEkNmEIbCoAycAYyoz/UX1PdOCAyRoR8HY2Wo1Y197rmgVncAHGdAYIgMiSEzCENhUAbOAI2hPq1dUKs7ITBEhsSQGYShMCCDCKgMjQCNoQHIoAAiAzJQQGYQhm5WFbFSXO8Y7Z36AUg1gDD0lBsuKBynz2kXFOuig4ny3BFXEi58FJjCgMSQGYShMCjDPxynn8yGWw2mMCAwRIbEkBmEoTD0DBruIbRCBjQCtEIGIAPcD2iFNFxOtEIGZAZhQAa4tmiFDKgMjQAm0XBJYBIDIgMywEmESQwQhsKgDJWh3YDS3QmBITIkhswgDIVBGSpDfwX3CcKCot7UZz8LSncxJ17KxyQaQBkqwccXPpBuN0PlLSaOC+prJ1SGRoCmyADyuZIiQ2LAcQQgDIUBGRRAZQFyWtTXTuAMMmeQOYOcGYShMCgDZyB8UBSoIE/Up3xiobhQrBRXitsdf4pvEfemVp8CLai9nZAYMoMwFAZlqAyNQC8GZIB7RiNDYsgMwtAzCLiFu98kzLui9nYCMsBtXy+GwBAZEkNmEIbCgFk+xJXidscwm08cKI4UJ4ozxZhDR1woVoorxW3GKMQdcaA4Utx/c5/GLtiSd4IwFAZlqAyNAP4yIDBEBs4gIIMMEIbCoAQRx1EA1CogMwhDYVCGytAIYFADAkNk4AxgUH0Jb0F97oTCoAyVoRGg1zQgMCCDAkgMmUEYegaf+6Ab1ISeAe5A1OcO6G41AbWCiCPFiWIcJAIghUtdLobAEBkSQ2YQhsKgDJUBGfTXAqp1JwSGyJAYkAHOIIwJM2sKYxqADHCDwpgGNAIY04DAEBkSQ2bAYAbiQrFSXClud/wZiUEcKI4UY4ATcaZYKC4UK8WV4jZjVP2OGL+5ASJDYsgMwlAYlKEyNAIY0wDOAMaE+QQU/U7IDMLQj4PJQBTwJkz5oYB3QmLIDMJQGJShMjQCGNMAzgDGhPk4FPBOyAzCUBiUoTI0AhgTplexr++EyJAYkEEBCAMyUIAyVAbMdfQYrahPHCjGQSoAE+49hvt8/gU8ZgD/CTxmQGFQhsrQCJSPA48Z0M8MhjNQvDshMwhDYVCGytAI4DEYlkHx7oTIkBiQAU4VGj+Y90Tx7gRlqAzIAHdhuxgCQ2TAVcCT2DKDMCAD3HhNGSpDuwFFvhMCQ2RIDJlBGAqDMlQGziBwBvAcTIKiAhjrxAu25U2Yj2xwFozgNrRy+gLj0mAzAyJD/wmYgmywmQHCUBiUoRLAWT4ZwD8woYlK3wmQzoDCoAyVoRHAPwYEhsiQGDIDZ5A5g8wZZM4gcwbCGQhnIJyBcAbCGQhnIJyBcAbCGQhnUDiDwhkUzqBwBoUzKJxB4QwKZ1D4oDAhvLxQyZswa4p63QnKUBkaQaUXEep1J0QGHAc3LKxmgDAgAwUoC1QGehWi4HcCZ9A4g5YYMoMwFAbOoN0H1evTbokAYSgMylAZGsGndfKBwMDHQetkAE5iAwhDYVCGytAIYDUDAgOmZy5AYsgMwoCpoQDA3BCy/kxKfaARfKalPoD5oQSIDIkhM+AcVEBhUAZkgMv4mZ8CfCaoPhAYIkNiyAzCUBiUgTPInIFwBsIZCGcAR+pzsIraYGwEoygBToqrAHcpuIwwlD6vrqjwnZAZ+k9QXDkYygBlqAyNAI2fAZEyQKtGcYFhNQMgjcsIqxnQCGA1AwJDZEgMmUEYCgNnUDmDyhk0zqBxBo0zaJxB4wwaZ9A4g8YZNM6gUQaoCJ4QGCJDYsgMwlAYlKEycAaBD/oZu1EApDOgMjQCWM2AwHCPqWigUR0NNKqjKO1NfcpXUds7QRmQQQE0EqBRHQ00qqMhcQaJM0icQRKGwqAMlYEzyHzQz7erEQvFhWKluFLc7hhfhPzEgeJIcaKYjit0XKHjfgwFFxgNmQGNAFYzIDBEhsSQGYShMHAG2H83Im53jA8QfOJAcaQ4UZwpForfR+7TIxo+X29DXClud/z5dBviQHGkOFGM39wAwlAYlKEyNIKPHX0gMESGxMAZwI763LSikHiCMtQbUFec+qSPoq449ZkMRV3xhMKgDJWhEaAZNCAwRIbEwBnAgfo8s6KueIIyVIZGAG8aEBgiAzKIgMwgDIUBGRRAZUAG/Q5HXfGEwNAf44Y4UZwpxkG6r6BAGJuKKgqEL1w17Av+iRPFmWKhuFCsFFeK2x1jP/BPTMcVOq7QcYWOK3RcoeMKHVfouELHLXTcQsctdFwYzecMoRkzoBGgGTMgMESGxJAZ+Dho7fQqAUUt8YTK0AjQ2hkQGCJDYugZNNxwsJcBhUEZkAHODuyl4WmCvQwIDJEBGeDJgL0MEIbCgAzgKLCXAe0GlCMnvIpQjzwhMiSGzCAMhUEZKkMjCJxB4AxgSX2SXVGWnPAQovg4w/HTx17wb+LFEBnkdlXUDme8klAhPCBdDIEhMpBDokJ4gjDgODhoUobKgAzwN5k8GhXCEyIDZ5A5g8wZ5MKgDJWB3hJJOAPhg/ZGzOeE9kbMiJXiSnG747d3zDhQHClG8ZoAMoMwFAZlqAyNQC+GwBAZkIECMoMwFAZlQAa4a1G8d+HHfar3PoAMcKd/6vc+kBgygzAUBmWoDL35iqvXLooDxZHiRHGmWCguFPdmM27jViluM87XRXGgOFKcKM4Uo1wyAAqDMlSGRtD9ZUJgiAyJITNwBnCevkReUV88oTI0gojjCABqBVAYlKEyNAIY1IDAEBkSQ2bgDGBQ6F6ixnhCZWgE+WIIDJEhMSCDDBCGwqAMyKACGoEggwYIDJGh31O4cOiKfWKhuB+kT9FrLyfGXjqKmuH5L5ThH/6kEcBjBgSGyJAY+DjwmAH9zGAw8lMePKAyNAJ4zIDAEBkSAzLA8waPGVAYlAEZ4EJVZIAbvF0MgSEyIAPchS0zCENhQAa4cFixMKDdgErh3GsGFJXCEyJDYsgMwlAYlKEyNILAGQTOIHAGgTMInAE8p8+FK6qLc8KPg7P0uQVFpXDuU7+K4mB82U5RHDyhMPSfgEF2FAdPaASwmQGBITJkygD+0WevFXW/EyDdL6PAPwYEhsiQGDKDMBQGZagMnIFwBsIZCGcgnIFwBsIZCGcgnIFwBsIZFM6gcAaFMyicQeEMCmdQOIPCGRTOoHAGyhkoZ6B80M8SBVxGmFDCPQqrGRAYIkNioBcR6o0nFAYcBzcsrGZAI4DV9BlsRb3xEGiRITFwBo0zaJxBU4bKQC9j1BtPCAyJoTeVL8TtjsNFcaA4UpwozhQLxaSPRkkvOVBUFk9oBL2jNCEwRIbEkBn6uevVDIqtfycoQ2VABt28UJqce5mCojR5QmRIDMhAAMJQGJQBGeDswIg+ACMagAxwwWBEAxJDZhCGwqAMlaERwIgGcAbCGQhnIJyBcAbCGcCIejmEoow593IIRb1yFlzG0m+pTywUF4rrHb+dApvAKiqNs+DaoukyoDAoQ2V4PwuYP+jlxDMOFOMguGdgJgMyAw6P2+RtJvPvleJKMR270bEbHbt3jEacKM4UC8V03HYfq9cJY5di7eXAMxaKC8VKcaW43XH3jhGTfveOEeN0IQk0MAYIQ2FQhsrQCOAfA3BHKSAyJIbMgAwqABk0gDJUhkYA/8B8OCqHJ0SGxIAMBCAMhaFngNl1VA5PaATwjwGBITIkhswgDIWBM8icQeYMhDMQzgD+gels1A5nTECjeDhjbhvFw7ngMsIYPvcO2iEDEgN+Aq4c2iEDCoMyVIZGgKbHJwN0hjCdjULgCV0a8+4oBJ5QGRoBWigDAkNkSAyZQRg4g8oZVM6gcgaNM2icQeMMGmfQOIPGGTTOoHEGjTNolAHqgicEhsiQGDKDMBQGZaAMUAs84W2ceOhR8Iuveyv28p1QGRoBnGbA2+lgGr0SeMaJYhwkAoShMODwCVDp79sdv01mxnTsRMdOdOw+VTRiobhQrBTTcTMd6+0Z+BKM9srdGSvFleJ2x32WesSB4kgx6fehkRHjdAmgMChDZWgE6NgMCAyRAfdbAWQGYSgMyAB3EgxFcbZgKB9Ax2ZAYEAGDZAYMoMwIIMMUIbK0DNAExzFwRMCQ2RIDJlBGAqDMlQGzqBxBo0zaJxB4wzgO5ggQXFwxqg/SoAz5lJR6JsxTYva3oymIWp7JwgDfoIClKEyNAJ4yIDAkCgDtF0wC9jgKAMg3QCNAI4yIDBEhsSQGYShMCgDZxA5g8QZJM4gcQaJM0icQeIMEmeQOIPEGSTOIHMGmTPInEHmDDJnkDmDzBlkziBzBpkzEM5A+KB9fBbjDyj6zRiTRWnvADjNgMAQGd5Oh+GHXtk7Y6EYB8HNCpsZUBlw+P766Bv5jr/vnaIRR4rp2ErHVjr222BmrBRXitsdVzpupWO9PQNfqdVeyjvjdse9nzPiQHGkOFGcKSZ9NEQwA4QS3gmVoU14tUMuhsAQGRJDv+H6jHZFDfCEwqAMyKAAkIF2gKMMCAyRARlUQGYQhsKADBKgMjQCGE+fxK6oAZ4QGRJDZhCGwqAMlaERJM4gcQaJM0icQeIMEmfQjUf6PHxFDbD0+fGKSl+5cBl7YyZ84kyxUKx33BswF85s79TIhWvbhz4mCENhUIb3s3Ah3z4d/Yn7dPSIcRDcM909JiQGHB63SfeP8feFYqWYjl3o2ErH7t4x4khxojhTTMdVOlbFGcdZq4EhMiSGzCAMhUEZKkMj6I0O6YvIK2p3J0SGxJAZegYBtxM20Au4nbrHTEAG+NnYWw+A2t0JgSEyJIbMIAyvDGBEvXJ3hPUO2wzf3jLCcIfxDtMdvo4IQ+gFvSMsd6h3WO+wzfDtIyMMd4izjINgz6oBmUEYCoMyVIZGkC6GwMAZJGQggMwgDIUBx+n3E3bilYCLkRNDZhCGwqAMlaERyMUQGDiDPogifW62YvfeCcJQGJShMjSC3pSZgAwUEBkSQ2ZABgFQGJBBBFSGRvB2pIa/eBvSCOMd4gi4095tk4Zs4TSffw4/GcB/AT8ZoAyVoRHATwbwceAnA3BdcAPBTwYIQ2FQhsrQbojwkwHIoAAiQ2LIDMhAAcigApShMjSCgAwaIDBEhsSADDJAGApDz6DPMVcU7E5oBNggb0BgiAyJITMIQ2HgDCJnEDmDxBkkzgB+0yfDKzYCloQfB1dJuApwlYTLmCEQAJEhMeAn4MrBYgYUBmWoDI0ArvLJAN6RcIHhHQMgjcsI7xhQGRoBvGNAYIgMiSEzCANnUDiDwhkUzkA5A+UMlDNQzkA5A+UMlDNQzkA5A+UMKmdQOYPKGVTOoHIGlTOonEHlDCpn0Pign0YNLiNMKOMehdUMqAzthrEv8AfoJfTZGXhAYsBxAkAYCgMyiIDKAvQaRCHuBM4gcAaBMwiZQRgKgzJwBpEP+vaQijPw9okR6h3WO2wzfPvDCMMdxju8ddEO6bPJFaW6EwqDMlSGRoBezoDA0E9Zn4GuKNWdkBmEARkUADJQQGVoBGi7DEAGFRAZEkNmQAYJUBiUARngOsF/PgD/GRAYIkNiyAzCUBiUgTMonAH8R3Czw38ENztcRnBJ3l5SP/9RneHbOkb4SlFxKWAO8gFlqAyNAH4w4JWG4kq+GysjTHeII3xAGAoDjo3r+3aP8edthL26doThDuMdpjvMdyh3WO5Q73AerdfQjvAl1ucBa6+FHaHeYb3DNsP3cz7CcIfxDm/dd+thhDgxDVAYlKEyNAK0HQYEhsjQ784+SVxRLTtBGApDz6BPt1ZUy8ona3jEB+ARAwJDz6Cvra6olp2QGYQB56AClKEyIIN+46NadkJgiAyJITMIQ2FQhsrAGRTOoHAGhTMonEHhDOARBbcgPKJPYFfU30rBZUR7Q3F90N4Y0NUUFwvtjQGFQRkqQyNAe2NAYIgMiYEzqJxB5QwqZ1A5g8oZNM6gcQaNM2icQeMMGmfQOIPGGTTOoFEGqLKdEBgiQ2JABhEgDIVBGSpDI0CDZUBkeEnDM1E8K32Wt6J4dgCaHgMCQ2R4/QA8Vb3CdoRyhzhCBihDZcCx++uhV9d+/vxtSiOMd3gfNd1HTfdR31Y0Qr3Deodthvk+Wr4P8fYVNAp7pewI2wzfvjHCcIfxDtMd5ju8deEViisBrxhQGRoBvGJAYIgMiQH3FX4XvGJAYVAGZNAAPQO0EVEZOyEwRIaeAdoO2Mp3gjAUBmRQAJWhEcBfKk4i/GVAZEgMmUEYCoMyVIZG0DiDxhk0zqBxBo0zaJwB/KXiQYC/9OnbigJa6RO7tdfMor3ZN+UdodyhzvD98KNzXdBX6bO+taBHMkAYCoMyvE5D+oRthv0Tr58QR2iAyJAY+rExMNbrY8eflzvUO7yPGu+jpvuob2cYYbzDdIf5Du+jpfsQmORFmO4w36HcYblDvcN6h22Gcuui6AxhPzF9erSiZHVCZhCGwqAMlaERwCEw6I1i1gmRITEgAyQKh8B8ITbfnaAMlQEZ9OcTm+9OCAyRARkEQGYQBmSAmxkOMaAyNAI4xIDAEBkSQ2YQBs6gcgaVM6icQeMMukOUC3d+d4iCWUFstVsuXIXemiiYIsRGuoIJVOykOyEypP43GZAZhKEwKEMl6G2GkUGAtAAyA6QLoDAoQ2VoBPFiCAyRITFkBs4gcgaRM4icQeQMEmeQOIPEGSTOIHEGiTNInEHiDBJnkDiDzBlkziBzBpkzyJxB5gwyZ5A5g8wHxVYsCCGsgMKgDJWhEWC3A4ThDuMd4gi4UUtmEAYcG1l1i/n8eb3DNkO9j6r3UfU+KrZZQZjvUO6w3OF9NOyq8ve//8vv/vSX//j93/74lz//+9/++oc//O5f/+/8B//1u3/9H//3d//5+7/+4c9/+92//vm///Snf/nd///7P/13/4/+6z9//+f+/3/7/V9f//Yl+oc//6/X/78E//cf//SHd/T3f7n/+nr+0/ru1fU/ft2z88/F//fvJhz+vpZv/j7Pv2/p6e/T89+/JkrjR+A1M3o9KeRnBa3zDFyPZ0Ce/z6+9z34KMT3Co2pof8gUZ4lUl850RVeI4/1QcA6C337OZyFpPL0K6qh8P729pB4f1z6IQlb4j1SNiSKPEgE43boDbCh8bo3n9J4FyY8XpDWRhqv0ft8n4z6jxLxWaK/S7vCq936KGDk8Br1rzOHGh4ljPsy9ElonInXqPJ3EmWezFfD+KsfEsI4Fa/phucfokYWquPuftdePkoYt5bm8ZC/3j3fCLT3uH4XaFK/EQhXnD7Dt/ZPzkO7n7AWn8+D//GQ8M1T2qsUP09pSN+4Tb7mnfkaY/7GtXvV2ufGDI+uHYsloTo1XkOC6eF32Bo1yNR4zRM/adR9x3r/R5uOla5Nx7JycDpWituOZUu4HMv8IT7HSrLtWKlsOpYl4HIsS8DpWOZ58DnWDx6PR8daPKbz+XjH+o2GpNu0XgO97Qvb64VA4/YO39heCfOSFHKbnyjUaViltcfmrnEmXr45Grwv2yzfSPT1yfMBeQ2nPJzMfMA3875vyq5v5n3flH3flH3fzPu+Kfu+Kbu+Kbu+Kfu+Kfu+mQ/4pv2Yap6++V7H/IXnabwV8leOVe8cXlMrTwol7zf1bA1fU6+Ufcsqum1ZpW5alpWD07L02rYsW8JlWeYP8VmWpm3L0rxpWZaAy7IsAadlmefBZ1k/eDweLWvxmLqaeqbGgaZe1WkWtdYvxjXb9M2W8jd/n8dPaPmb49fZwW7yPB5oDWteZTwY8R9M4jcSZXNkter+0Gqtu2Or5pkIdVzLGK/HwYp27Q+NtrD/9mlx++3T0ubbxz6dc8rhdU2/uzfjHO5+he0riTQ7c+8Pbz1eVN1vltgavmZJawfGzK9rf9D8Cruj5lYW3mHzK+2Pm9savoFz87c4R86vsj90funu2Lml4Bs8txS8o+fmufC1UH7wpDy2UBZPrKuFYmo4Wyi2gYlOA9PrKw/s+wdC4vWW/KaVUodAq+2bv2/T/K7rmwRefjQnPq/wVQr3zOkVH0fDQrS8s9zvkpINjbDZVgox7jeWQky7rSX7bOj0vagpPP8W2Z+NXon45qOjHni5WoPg7hnptvtytbLwvlxT2H+52hq+l6v5W5wv15T3X67WDInv5Wop+F6u5iyN8+Vqngvn3PQPHpXHt+viofVNTy8sKLdpQeXxvRKyVQJS5hCAlHp9peG2sWxemr7R++fa5PKlSF+H9xGRr0XuDs/rbn28Notz4nPlE5NH4cDsUdiePgoH5o/CgQmkcGAGKRyYQgoH5pDC9iRS2J5FCgemkcKBeaRwYiJp8dAeceU2zkisz0U/tkaV2dSuzyM/4cR0UjgxnxROTCiFAzNKYXtKKRyYUwoHJpXCgVmlcGBaKRyYVwrbE0the2YpHJhaCgfmlsKJyaVwYnYpnJheWvhYnZ3kdn3phU1nf79V/Wr0JNHFfR52qNl6WGY7+XUuntva1kCUb/DDmmpyD35Y003OwQ/zbESd1hHrl2c0tplGuh6vazgx4RROzDiFA1NOYXvOyT6nScI8p9q+uy55VrK87pTwnUbfhxMa8lwBGKzR45znmpuc6+Od3uqB1suJead4YN4p7s87uS9Lki8vbR1nI5VnG4uXpXEvx0pV2+MJtSTaNf24XU93h/lSmC25cDV9/h3mLTqLB163aHjWqJsvhXi1/ZdCtJZc+F4K9tno+9TibEh8vLuitSLJdzZCOnE28i8+G7NRmkWu7+4vmbM2WfT5HjWX4zhfkTGcWP0R9geiYtxe/2Ge0zKn0l6DjM/nNB4Y3IsxHTinMR84p/Jrz6ne5/S5cRztYfV4j728t698PB3WIMHVdz7Fw3/xK+57EYlfPf6aRu8p6/NkaTRnkJzrD6K51Mh7m6W0f5tZcy++28y+MGW+9F9xKN9d3TrPxyt+HOPrd+NuwzKmE6aaDphqvn7plXn3q+dL96rPPyVYj4xrxY55ozrH52LeX5G80PAt8DN/i298Lub9Rckx765KNhVc43OmgnN8zj4XzmV+P3DT57eU7eu+BSuLF4zvaTEnXrzvXJED79wfiDy+c60OXS91xG8JwTgh1sxevTu37blSK5YDY1K9uHf73VD2x6Ri2R2TWlxa51vbFnG+tcuJdfBFT1yZeuDKtF96ZbxvbfOR0fuNq8974/T9a/Z6/Xqi16/7vf7Fw+8qhTGfW28jRnW/EWNr+Box5m9xNmLqtd+IqWG3EWMp+BoxloK3EWOeC2cj5gcvF2Ozgmu/VsI2j3Y/ca08D8ZYK5+cFWymhvuxNSejnBVsCxFfBdtKxFXBtjonvnZMywfelk3235at7L4trSy8rmxOSDld2dZw7h0j266crrDtyumKm65sKvj2j7EUvBvImOfC6co/eFSeXbnWX+zK+Zp3R76elzYka1LK6cqmhteVUwj7rrwQ8bnySsTlyqtz4nLlFGTflVMo266crMkplyubWXj387ImprwbetkaLle2f4vTlc2pKacrWzNTPle2FHyubM6OOV3ZPBc+V/7Jo/LoyouH9oQrh3mX5vC82UKyts8LMd47EsZEFXk/SkTaTMSYlTY1+ug5NOLzzg0pmbsr+gqcFyK+MaGUTvhpOuCnadtP0wE/TQf8NB3w03TAT/MBP83bfpq3/TQf8NN8wE/TCT9dPLSuAmdbxFng7Pex8s0ONiHcF4bfDL91QmtRU25hvhpaNDTS5hhskrw/BpusMWnnHuH22Uiz8qrl9vxb9EDXQw6UXiU5UH6ayn75aSq75admFt53S9nf9mSh4Xu3lP1tT1LZ3/Ykld1tT0wF5w68+9ue2OfC+W75waPy/G6xH1rnxuG2Bd2Fm+1586dkzUZ5R1DMZU1eG9NyYATFFnGOoCxEfCMoi3Pic+V64AMOqe5/wSHV3U84mFl4Xbnul0wtNHyuXPc/45DqfslUqrslU6aCz5XrfsmUfS6crvyDR+XZle2H9ogrz9WIcl3P49rWzInXlduBbX+SubmW15VtEacrL0R8rtwO7GKUrwNVU/nar5rK127VlJmF05XzJduuvNDw7bh+7deAZGuZlNOVszUM63JlU8HlyqaC05Xtc+Hcd/06UAOyeGgPuLJcqU1Xfl5vmq2Zk1LzuDtKLU+j2tmaiop6zVo4pZNafpJFvbNoj1+LsCT0mrWSyubzE4m7DlZDCF9J3KNaGot+eVXlvqqPsxU5mkV999619KSE3yjk7YtqJjHLrGNNz0lYw9C9nAP2l+ia/iSJOSgW+VyGHyjMlURRH3+G/4o+7zaWk7k3jt6bJmp9OhWWhMr8JVqoEZd+I2FVnZR5Y2lJ5RuJ16hzvgeg75sz/0RC7jfr1R4l5JdKaBsDFbyI4AcCdQ491/iVQLvmFvLx+kpgPqHNuBKWwFzF/aVA6Ov2P7Oq4auzEK4836QXNaF/I2FO8fiysCTiXJcSaQnGTwRmizPSVOoPBBJVk38l0FtOn8np7wRmuyin9p3AdU8JfSXAK8e/upnC3TXkVtmPJOZj+VIL30mUOwv9Los4VwWFmL+7I2W+v8tX90OczdNYHq+GNaLcm1qf++H5y71iDSfJXF+tQg3L8JsGv1lqne6lTYlmTMNv2oX2NNLcCPs1dxqfNYJ5Y+V7wpO7QL/9NeZFuffYa1+ZZYrzl9AmAD8RmN+4S+G7DOau5Ck/ZWA3yML0ewnhcZIhm9NHdV5Rre2p/5bNtUy+NraZRYt3K+RxOMyUqNc0zfoaSfpKIsztdGuQ9pVEr/CFhPFFHruZPceOXlf1cS4/a97tOKlsX1QzCVfHyVp/5Ow4mUm4Ok6mwoGOE13R5x1HsjlV5Os4mSugfB2nmrY7TjVtd5xsCVevp5ZfKuHqOFkCro6TJeDqOJkCno6TKeDpOJnXwddlMSV8HSdz5YUvC0vC1XEyBTwdJ0vA1XGyBFwdJ1PA03GyBRwdJ1PA03EybyZfx8mWcHWcbAlXx8l+sFwdJ/OO9HScTAFHx0mseQ5Xx0nMGR9fx0nMnfF8HScJYbvjJNbWeP6Ok3lRPB0n02c8HSdTwNNxMgX2O056d5yetyyQYK46TnXWAcjTbLWY++G52tiLLPTOorbHLMw90eeujdLCVxLlXi9Yrli/kri/llhe05tfdZz6Zufjqj6W/UqUzY6TWJM9zotqJuHpOIn52SBXx8lOwtNxshX2O058RdtjV1isWRZfx8mU8HWcxNr7ztdxMiV8HaeFhKfXI/bGd9sSno6TKeDpOJkCno6TLeDoONkCjo6TfR1cXRZbwtVx6rvYbmaRZa/jZAs4mqm2gKPnZQp4el6mgKfnZQs4el4LgXXPyxZw9Lzsu9HV81pIeHpeCwlPz2vxZHp6XvYd6ek4iW9rsOdN7KRc+x0na6bH23Gyt7DzdZzM5T7ejpN9URwdJ9smHB0nW8DRcbIFtjtO8S4BiulxJHuhMb3mpfHcqLO+flTCrJIr4fkTW6bGq0E521ON7nDxS8S7jDte/HH1H5yNNH+JGB9BWZzRWm8N44zKgTMq+2dUfvEZnZ+VeYXy3RntS/+GxuNVEWvZQ+l7ruOMxvKdhvOM1u171FyfPGtBX2/H/Pw7rKVsMpuaIkWeNXY/niQnPp4k+x9PWpwNjfNsGMNP9cDWSCsR15oLOfH1JDnw9STZ/nqSmYVzzYW0/TUXCw3Xmgv7t/jWXEjbX3MhbXfNhangWnNhKjjXXNjnwrfm4iePyuOai8VD61tzsbCgdo8bh0c7LVcxx549K+FMDa+NFXs5jG8l3ELEtxJuJeJaCbc6Jy5XLuHAVz9K2P/qRwm7X/0ws3C6crEWtDhdeaHhcmX7t/hcuZg7zflcuVifUXK5sqngcmVTwenK9rnwufJPHpVHV148tCdcucQ8HfW5a1ysL7F4XTke2Pymn7dtV7ZFnK68EPG5cjywl09JBz75VdL+J79K2v3kl5mF15XT/h71Cw2fK5u/xenKeX+P+pJ396g3FXyunPf3qLfPhdOVf/CoPLty1F/uyvfwml6PdQXF+nyR6Bx6FeNrcMX+BFKp94RdaU+lGkWsT325ylaKhN0Kh0UWnrIVW8JVtmJK+MpWbAlX2crisup9o19ann/K9qjUIo8mcyPUqxl5HBhRKuXA3kql7O+tVMru3kqri9tuO33eotY2IJ1T3KLP++32b0UaE5v3OX1Ncl5fJXJXXkiNz6MG1goZ304NZX/B0SILz04NpoRvpwZbwrVTgy3h2qlhcVXntPnrqj4OzpftBUdlf8FR2V5wVPYXHJXtBUdle8GR/4o+7xRe9hcclf0FR2V/wVHZX3BU9hcclf0FR2V3wVHZXXBUdhccld0FR2V3wVHZX3BU9hcclf0FR2V3wVHZXXBUdhccld0FR2V3wVHZXXBUdhcclf0FR2V/wVHZX3BU9hccld0FR2V3wZFuLzjSAwuO9MCCIz2w4EiPLDgquwuOyu6Co7K74KjsLjhaNMjuio/6XPGh1goZ304Nur/gyM7CtVODKeHbqcGWcO3UYEu4dmpYXNX5Bnxd1ceBQd1ecKT7C450e8GR7i840u0FR7q94Mh/RZ8XHOn+giPdX3Ck+wuOdH/Bke4vONL9BUe6u+BIdxcc6e6CI91dcKS7C450f8GR7i840v0FR7q74Eh31wvp7noh3V0vpLvrhXR3vZDurhfS/fVCur9eSPfXC+n+eiHdXQKnuwuO1P4koKfjdGDBkR5YcKQHFhzpkQVHurvgSHcXHOnugiPdXXBkN8juT3m9QmMRhakR2q3x3Kg7sOBI9xcc6f6CI/NsvNqT85e85r+/PKNzbvWlYZxROXBGZf+Myq89o2HeXyUkef4lbfN1aAm0dLcQU33sVFvTNb7SEK1xuy9qZ+EpDbElXKUhpoSvNMSWcJWG2Bf1fq22/DxSYn0EyFcYYmfRa72QRZGniW5tlvU5y0L0xEIjPbDQSLcXGi0u7CxIbbl+VYtRgpb79nr8aoa2sv3Et+2vZiyycD3xpoTvibcknE+8KeF64ldXNd4SjzP39dr9asZrEHb3otpJeIYU67X91Qw7Cc+Qoq2wPaTIVzQ+b8ZQw/ZXM0wJ35BiDdtfzTAlfEOKCwnPeGD/pvsvlPAMKZoCniFFU8AzpGgLOIYUbQHHkKJ9HVyDebaEa0ixxu2vZpgSniFFW8AxgGMLOMYkTQHPmKQp4BmTtAUcY5ILgfWYpC3g6ITZd6NrTHIh4RmTXEh4xiQXT6ZnTNK+Ix1DitUaF3XtYVTT/lczatr/akbN+1/NqPnEVzPsi+IYUrRtwjGkaAs4hhRtgd0hxRLL3SCz9iIxNVx7u1RracAJDd8AmClxYH+Y+ZSFUB8XBVRrvx29F+CpMYRWxez2+HZ3qZJ3h0sWv2XeoRqeP2dZ5cC2CCsR16BLtb485B10qdbskHPQpZZrc9DFzMK5YrVas0POFasLDdeKVfu3+FasVnNJkG/Fai1WTbpnxaqp4Fqxaio4V6za58K3YvUnj8rjitXFQ+tbsbqwoDnmoMb+5rZGjPfCovw4P1OtlSwtlTAnJUp91jA763ov3s/PK+gWInXOer3imB9F9IAVat23Qm27Vmhl4bVCa37Da4W2hs8Kzd/itEKrPee1QnN/OpcVWgo+K6yyb4XmuXBa4Q8elWcrXDy081l5x/qViLy6XPMWey70tX0sh+ljOTwW+tZmrmSbSz2VRifil1k8f0Zs4er1mq7enl3dmuZ4XYo5TtKuxxNqSbyb59OPteijH7cTTdO23zRt13bTtO03Tdu13zRdaPj8uO03Tdu13zRt127T1FRw+bGp4PRj+1w4/bidaJraD63Oce53rF81TdOcqdUUw3cmdu/wq/l5bLBZ29L5TMyU8JpYMzeVc5pYC7pvYvZngBwmZmbhNTFzTzinidkaLhOzf4vTxMyJJaeJxbxrYjHvmpil4DUx81z4TOwnj8qjiS0e2hMmdk81aX7eX8HWkFTm5MTzjlDNWifkHSZcibiGCZu50MdrY0n2bSyVXRuzsvDamDXz5LUxW8NnY+ZvcdqYOfPktLEcd23MUvDZmKXgtTHzXDht7AePyrON2Q/tiWFCKbcF6ePwXMttuzMoztWO8rxj6UJj7tH3mup9/imWhrNJaEm4m4RywkvlgJfKtpfKAS+VA14qB7xUDnhpOeClZdtLy7aXlgNeWg54qZzwUvuhPdEk7Jug47KUWL8zMb0H5/R5cK7pdaBJqAfK9Zse2IG+6f4O9E13d6A3s/DamO7vQL/Q8NmY7u9A33R/B/pWd3egNxV8Nlb3d6C3z4XTxn7wqDzbmP3QnmgS1ln5r/X5uyDN+kKSa6bDVHCbWD2w//xCxLf//ErEtf/86pz4PLkd2H++tf3951vb3X/ezMLryW1///mFhs+T2/7+8+G69jegf4ns7kBvS7hs2ZZw+vLifDiN+QfPy7MxV/3lxnyX4xhbur5OSd10ZlvCa83hCte+N69UfOa8VHG58/K8uOz5lcuBrn+4wn7f/yWy2/m383Ba9Etkv/u/EnGZ9OLneF06hgMuHeO2S8e47dIxHnDpuD8K8KPH5tGmV4/wEZ+eBeRay5dFOk3mHHl71ghXuk4YdbpO2FqKJ2wtpQO2lvK2raV0wNZSOWBrqRywtZQO2FpqB2wtX9u2lq9tW8vXAVtL7YCtpXjC1tIvHxdodTx79dXq/srW6jWXiFZj16DX1am7kzS2hneWJlxynTA1CQdMTeK2qVl5uE3NHI73mpot4jQ18+d4Tc36qJLb1KypJ6epWRJOUzMnwLymZp4Pr6n94LExTM1+hA/M2dTeUvgYUv5uzqbGufqxxvZde6+mudNJzZfR3rM+BJTq3HwmVX02RlOjzT3ZXmH56pzmeaPVnL5belRlLtZ5tabD8/lQwwFynrsK5fy4Idr742vGXeZce7RS8S0+eqkcGRrQE0MDuj80oCeGBvTE0ICeGBrQE0MD9cTQQN0fGqj7QwP1xNBAPTE0oEeGBhaPsGsp0kLFuxbJNse55L9Ka98ZbJmjr69Tkp4N1tqOr84tkFq8JeJvB5OtzfgOSOjc/0epdOw3EosTOkdbqhRjZL3JiTdFkxNviqYn3hRtf6HqS6Rtvyna/lLVEK79taorEeebou2vVn1v97L/pgjX7npVW8L3pjAlvG8K+3x43xQ/eGyMN0U7sGh1oXLkTXHv4lg1Prt8CMbooG/z15XG7Fa0EoqRiFUx4Nqr9KWx/amcVR6e3UoXGq7tSm0N336lCw3XhqWLi6syX+L6vJ3SQqSmeZfVHL4VkTpFqnGbWYudfE2SYH2GyClh/pRWx43a2nMl6CuP7S8tvzTq/hMTt7+1bGv4Pra80HB9bXmh4frcsn1x37Uvc8es64pfPjOvtkq8v9ceUnyWSSfanCEdWMYaQtpfx/reW3G3zfmTUyv56yuk1y3zvCwlhLzd0Qo5/lJLejXU2n1O0mXctdla0Or6iuFLQ/ZNyczD9R1DW8P3IcOFhutLhgsN16cMV5c3xXJf3hy/veVTmz5wGXulrGRyurPJRg1EsLYEdN72stseWDTDpzNWnqj4519i+uvMI7T0fKuZGpem2W18DZoZT7A9laTlfn3xPos/kvF9sOTVnL/2+wQl7JuJnYevT2Dvb+jrE1ga3j6BqeHsE9gTlp7vlrzysOaiXDtxLvJwdl6LVcnhrYAKeqJYIOiBYoGg28UCi+vr+XzJyo3arGh+xVanz9zf6/Wn95uiydcypd4byZf2/PxZ2555/UgP9LjsPHx+ZGo4/cjS8PqRqeH0I/vq3u/g9yvr+dfUvO9Ii9tV7lZ0szIpJzypnpgnCPXAPEGo2/MEq2vc7pFkYwbGdqXXw0/brFfDTqxZqdcr5T61oaTru/HbaUlVm9FwtJYWhRjvBnlM13eZtDIz4W99/HMm1uCrc3/ul8p2s8D8Ne2av6Zd5q9pB35NtNYoHfk187Zv4XkztFceBzYSWqr4bCleJwpd4nWg0CVe24UuZh7e6ct4HSh0WYj4pi/tn+OcvozhQKFLDNuFLqaEb/rSlPBOX9rnwzl9+ZPH5nn6cvEIHygWb2GOKLcQn8cHYmjbIx62htvW7CVKzsWKCxXnYsWVim+x4uq8OI3amufyG3UsB4w66rZRW3m4jTq2A0ZtiziN2vw5XqNO8YBRW+uLnEZtSTiNOqUDRm2eD69R/+CxMYzafoSPGPX8SFcL8jzNHM31Uk6jzicWK0Zzhz+3UdsqXqNeqDiNOp9Yftm/QLhv1PnA5GzM25OzZh5uo5brgFHLdcCosx4wakkHjFrytlFL3jZqyQeMWtIBo/7BY2MYdb5+uVGXu5OvRiff3HDPadSmhtuoSzph1LaK16gXKk6jXpwXp1GXEyOysRwYkY1le0TWzMNt1Hqgcnsh4jTqcqByO+qByu2o25XbpoTTqPVA5bZ9PrxG/YPHxjBq+xE+YtTz0xQtGjVSsf5qkdcfzm/4vuL07Eg/UJH4pcpdAf6KQ/lSpcb7U6U1PTu1OevlrXeMtZ5w6rr/8aEQ27Xt1OaZpVmv+F7Z9+X10fnt6lf8PGccm/kZ1zk78+oAf6fhbeks7tm5Kvv1a2L49pzMPddecdUv71nn6jLzbnO/j9uJEa52YoSr7n9nKqTrwAhXurZHuEwJ3/vYlPC+j+3z4X0f/8Acjffxwqh9K6lsFedKquWrp9Crx+gkWFUB7f4aqj59q3t1TprcRtCet3lIwbbHel/l63Gjh6WKnlGpt8rzsoylSjiicpFK+fKOu9J9x/G+Ij9TCaQS8qPlJ+tTWM6XqanhfpnaG+3eVXoSS37OxPLZuQeVtqcP1S9sdta0tfitU98jMSrbZq9W39rsrMTb1kqM1/MJrSeMYKGiZ1R8RrBSCUdUfEawuEYq9zUyWm22Co2VlZyfr7T5aa3rurtxydCwxkNbvRvEzyN/Zh5OjcUZKek+r7x/xT9l0jbNZJGH0DMoz6sSFyo6N/R4xe3bc1Lv5Tul5udczFEhlz3aEi579I5NWRL2oLvXHrOesMeFip5R8dnjSiUcUfHZ4+IaOe3RVvHaozXp5LVH2bc2Mw+vPdpnxGuP5raFLnu08/Dao63itUdbxWuP5uymzx5NCZ89OudYLQm7eMRrj6WcsMeFip5R8dnjSiUcUfHZ4+IaOe3RVvHao/kVLqc96r61mXl47dE+I157tFYl+ezRzsNrj7aK1x5tFa89pu3OtS3hs8e037m2i6C99ljlhD0uVPSMis8eVyrhiIrPHhfXyGmPtorXHlvct8e2b21mHl57tM+I1x6ttV4+e7Tz8NqjreK1R1vFa4/mahOfPZoSPnt0rnkxJBZLCtM9NB3T8wD3SuXehD8mfVTJ5jIv3wC3qeHdW8P+NXl+S/td72lkYnS6ap0T6NX4+uJKZM6L1mps+7fKRG4RY/8j+6TIXMv+io1F5AuVuY/ZKxb9VuV+j0Zphoq9rrfMWz8YX45Yqdx3XNDrUSWbmxk6b/1wYFsZ+9fc3wx9xeF6zsRqgoZrvjPCe+Nh45Yzk9H5DnzF7eufRMu36/Pk22JFeqV93qyd1RYqtGNA1cdflK1tDV/nfu6GH8N985cfZdLCvUdGi/qcib3vh3fDDmsLBN+nDFe7KPhqmXM88JnZlYqzlnml4qtlNnd08NYJZXO9lbNOaCHiqxOyf46zTiibc1/OOqFsbW/oqxMyJXx1QqaEt07IPh/OOqGfbEDyXCe0eIx9dbsrFWefP+d8oM+/UtEzKq4+/1IlHFFx9flX18jX51+oOPv82fxul6/Pn2W/v27m4dRYnBFnnz9b81+uPv8iD2eff6Hi7PMvVJx9ftuuXX1+W8LV5/e+NKw+v7kbmN67galhjmW/stvU8HZYrO/KeHcUMzWqTI2q4bE9bWrcX9sq3Jr+mcbcj7o0edawd/ObfYNXc/z5JWxqyGzbvFqvzwZifrHL2Uexd3yce3y/HpxnSzVnmS6Ve2dClec9bFcy3n1SrYV4zo5OObENSlY90dGxVbwdnYWKs6OjB755meuBBYoLEWdHRw988zLXAwsUc91eoGhKODs69cACRft8eDs6P9j91ejolANbfqxUvB0dc4TM3dFZqOgZFV9HZ6USjqj4OjrlRO3HQsXb0TE3OvR1dMTa5tDb0THXjDk7OuVE7Ydcu8sQFnl4OzrlRO3HQsXb0anblcO2hK+j43xpWB0dcxt2X0dHrP38nB0dU8Pb0Sl5v6Njajg7OqaGs6Nja/g6OouPUwh940KNb1xYwzbufoq5147js5WrL5jINX3oucsl8cCdGg/cqda2UN4vmFga3jvV1HDeqbbGiTv1SveG5Zd8+fG+15/eLaNXH/C5CyrWtJL3hk8nPpBqfiDK22MTcxc/Z49tIeLssaUDe3+JeWadPTax5nN8PTZTwtdjMyW8PTb7fHh7bD/4npnRY0snPgZqq3iXsJufAHO+ceyf41x9LvlEXexKRc+ouLqOS5VwRMXXdbRvFufq84WKc/W5SNxvXUjcb13Yv8a5+ly257dsh3R1kmwJVyfJ69NWJ8n8omcL8W4mPe4sJWV/awJTw31zhP2mZzowG5QOzAalA7NB9vd87287abO+omuIpDhbjCnR8Eb5iUaaLayU6uOPkXKg5Rpl+8Vpfu/ZOaigB8xUD5ipVajp/mZ0239eTA3n82JruJ6XxQffvY0ibScaRQsVPaPiaxStVMIRFVejyL5G3kbRQsXbKKr7ZdumhvM5Xvwab6Oo7u6iEa7tkWNbwtUosiVcjaLLNFe3EbQTFYQrFT2j4jOCdqKCcKniMwLzGrmNwFZxGkG59sdeTQ2vEdi/xmkE5cqbRnDV7fVxtoTLCGwJnxFYA8Dh1U6cD5+++hfPJ/REi2ClomdUXEawVAlHVHxGsLhG99yptit+qdJY5Xl8rxxYyFUOLOSyf83rtp1GUMPzrHQJuy2CRR4hhzsPqV/+mnAvKKvxeZHdQiXeNTc1Po8DX2ZVos/a7MJGl7XZdZ4ua0sn9tUq8cS+WisVPaPis7aVSjii4rO2dGJfrYWKs3iopP19tcqBLQPNPJwaizPiLB7qHwHfs8d0Yl+thYqzeGih4iweuqzduZz2aEr47NGU8Nmj+YlVtz3mE/tqrVT0jIrPHlcq4YiKzx4X18hpj7aK1x5lf1+tcmDLwCL7m88szojXHmV3X61FHl57tFW89mireO0x7neM437HOO52jJu53NftjuVE+cBKRc+o+NyxnCgfWKp43HF1iVzmuBDxeqPub6pVDuwXaObh01icEK816uaeWos0fM64EPEZ40LE64vW4KfTF00Jny+aEi5f1COd6npi4mClomdUfL5YT0wcLFVcvqgH+tQLEa8vtv2NB8qBjQLNPJy+qEd61G2zLmuRhtMX9UB/eiHi88VWd3vTtoLHFW0FlymadX/eSRS9TnzpaKWiZ1RcprhUCUdUXKa4uESuOZSFiHMKRcN+MaGp4ZtCsX+MdwZFw+b6wkUavgmUlYhr/mQh4ps+6Y6zZ2hlt/trK7gMLZ3YVFoXi62chrZQ0TMqPkNbqYQjKi5DSwf2lF6IOFt5an2BytnK07i/YtrMw9nKSyd2lFZLxWWK6cCG0gsRZysvHdhOuuVtU8zbppi3TTHkE628fJ0wxYWKnlHxmeJKJRxRcZni4hL5Wnm2iLeVZ313ytvKW3y7ytPKM3+Mu5Un16ah2Wk4W3kLEV8rzxZxtvLi7seVbAWXocXdTyvVVk4Ympz4LudKRc+o+AxtpRKOqHgMbXWJXIa2EPEaWtn/eoGW7a8X2D/GbWhls7JlkYbP0FYiLkNbiDgN7dpd7WkruAzt2l3rWfXE8ibVEyUtKxU9o+IztJVKOKLiMjQ9sLppIeJc06B1f4tXU8NpaHpibZPWzQnXur0pVt3eE6tub4lV5cTO6NqODFy1IwNX7cjAVTsycNUODFytLpFr4Goh4h24agcGrg5s9Wfm4dNYnBDnwFW9NgeuFmn4Bq4WIr6Bq4WIb+Cqlt1mka3gMsWy3SzK5m0e2ry9+Hf8RGK+cF9h/U6Cs3isl6zWB+FiicPFYqEH9p80dnfEXGQxN6CKvNvSP2nIr82CzkV5OhfVanE7d6149VKeNXy7VtSr/VIJ3yYNtoRrj4aFhGeLBrV6c87dN6o1MuRs2JoazoattZGub/MNW8J5Wa/9y3ptX1ZrawjfZwtsCd9XC2ra3g3UTsP30YJqrXAq10yjhOt5v0hbJNwXNtCH/H4j8ho0M562MpuiUup3Gu4PFtRkNgGdHyxYqDg/WLBScX2wQK2yPe/ulzUf2P1yIeLa/dL+Nc7NL2s+sPllzdubX5oSvs0vTQnv5pf2+fBtfrnokvr2vlw8wr6PFSxEnEMPVU4UAa5U9IyKa+hhqRKOqHiGHlaXyDX0sBBxDj1Uc0dB39BDLfufUzPz8GksToh36KFs7smySMM39LAQ8Q09LEScK0Zsl3atGLElXCtGvO+KZwm1Phfk7dEc2E+w7u8nqNb4tK9HY0u4ejS2hKtHs5Dw9Whkd1BpIeEZVPpBFs8DKdYN6nIevfZPxbV/Kq4Dp2JzVMoswfSOKFkL7pyd1BR+qYTzQd3fJVf3N8lVa4DO+emN2vanSk0Np/9ay7p92x+bEs7Lakr4Lqst4bmsxfqqoPNJa9bAlu8xKfXXSvguiS3huiQLCdclKfs7jZtFMM4nzdTwPWlFtzcaNyWcl1W3DXQh4bus1jDFq1MzOxavy/PUnF+J3Bcl6PMOb2bxqvfuCNsj+4sf02eRPz+mhus5EfMzzbOCTv5hLOv6SSY6+6+vuH37c+4xpFd36OkdWczN916DnPcXdF9zK1+KiNwi+jhu0+L2KP8ikTYHPF9x1OdE8vbwepH2azXcQ/Qtnvim8ELFOUS/UnEN0Zdy4JPCLR34pPBCxDVEb/8a5xB9Swe+KNzS9heFTQnfEL0p4R2it8+Hb4i+lAMfFF48wr4h+oWIc4jeXEnmHqJfqegZFdcQ/VIlHFHxDNGvLpFriH4h4hyif03Lbw/RN9keXrfz8GksTohziL7JZuXUIg3fEP1CxDdEvxBxDtHbLu0aorclXEP03nfFs0SR/e8It7L/hQBTw9k1ke3PCNsSvo6rbH9EeCHh6rjGE3sYtnJifd9KRc+o+F53K5VwRMX1uosH9jBciHhfd/ZUiu91Zy4Rcr7udHsL7cUJ8b7udPPjAIs0nK+7eGAPw4WI73VX8u4WhraC52VnK7jeddeJFUL2ppBuU6wnvgqwVPGZ4kolHFFxmeJ1YIXQQsRrim3/mwCt7X8TwMzDaYrXiRVCrW0unF6k4TTF68AKoYWI0xTj7gaGtoLLFOPuBobml/G8pvj6rw4snF6q6BkVjymuVcIRFY8pri6RyxQXIj5TjFfY/hLAS2Pb0Ow8fBqLE+IzxVcimx8CWKThM8WFiM8UFyI+UxRrTazLFG0FjynaCj5T3C7rWkh4yrp+kMXT3fX6V9ZeVK5lky+NzRf/KgvPsslofsPnRBaeZZOyX/oo+6WPsl/6+FLfrPeT/dJH2S99FD3wjKTN3r7slz7GK2/XLUr6tRK+AVDZL32U/dJHsUoffePar0uyvY+freEb1xazYtA1ri37pY+yX/oo+6WPeb/0MV7W8LrvMcn7pY95v/Qx75c+5v3Sx2yVPvqKjONVrv0nrWzvi573Sx/zfulj3i99zPuljzmW/SetbJfz59h+qYTzksTtDSIWEq5LYn082VdkHC9N+0+abpfzZ2vcyvmkxX0DjfsGGrcNNJmDxO4RuHpgc+mlip5R8Y3ArVTCERXPCNzqErlG4BYi3hE4a5rFOwJXtzcds/PwaSxOiHcErm2u4Vuk4RuBW4j4RuAWIr4RuHztjsDZCp4ROFvBMwKXNJ8wRXOHPrcpLlT0jIrPFFcq4YiKyxQXl8hniraI0xSDuXTKZ4rh2jY0Ow+nKdonxGmKIWwOli7ScJqiLeI0RVvEZ4rJeuO5TNFW8JiireAyRTlQ1fe6Nw5U9S1V9IyKyxSXKuGIissU5UBV30LEa4pR9k0xln1TjNtFMIsT4jXFuDnOv0jDaYpyoKpvIeI0RWt4xmeKpoLLFE0FlykmazTCufN/7KuI9k0x6QlTXKn4THGlEo6ouEzRvETOnf8XIr6d/2PI28uobQ3f+Nfix/h2/n8lsll8knLadQBTweUApoLPAawhnpjuOyMm4/ayRYrcIlofr4jsD68GSfu3l/ljcpm3V8yGJ1r7qL+6+OOM5HA9rtL/gUiITyKLnyP3pgNRHseLVyI53SKiX4rcBh/l8XtK6TpRchlKPPHGKvHEG6vEE2+sEk+8scqBtairS+Rrxl8nSi5D2V6L+pob216LaufhbMZfJ0oug26uRV2k4WzGXwdKLhcizmZ83H6Jx+2XeNx9iUdzTsJtijWcMMUaTpjiSsVniiuVcETFY4qrS+QyxYWI1xRr3TfF2vZN8cBMmn1CvKbYNj/fs0jDZ4oLEZ8pLkScpnjtfnfaVnCZ4rX73elYDmwsHuN1ojRgpaJnVFymuFQJR1RcplgObCy+EHGaYrz2SwNe8/rbhhYPzKSVAxuLxxg2SwMWaThNsRzYWHwh4jPFWHeXcdsKHlO0FVymKOa8hl5l3l/6OBrwujfa9kiNqeEbqVn8mNLuh0Vj+E5ES7pFqj7eYdZUT9bb319DRs9GZq2E8O0rF2O0P4vq2VduJeLaV87+Nb595V6JWI7q21fuJWJNXXn2lbMlXPvK2RLOfeUW58O3r1ws5qyEb1+5xQ1f78+Jv+LvnhpJ9xtCnktZF89vLfcqpvq4pWPU7ZddOTCRFtOJkquVip5R8TU2VyrhiIqvsVn2J9IWIs6JtJjL/vszb+9Wvfgxzom0mDcrAxbu6mpa2RKutpXX4w0JcztWrbc9a43PF1byCRNYqOgZFZ8JrFTCERWXCSwu0d2f0HbF70Qaizy//OL+zn+2htMEzB/zumenCdTw3E2Lu5+hWqQR5rbm708A1+9+S6j3b4mPu8UvROK9ZW6Nz+2jvFszaSu4HC3v1kxGc9G/u7e4/xUqW8N5o9s/xtlbXJwRX2/RrAvy9hatNpG7t6j1QG/RFvH1Fs1f4+0tmhM13t5ijdu9xeobu7Z6i5aEu7dong9nb9H8qK23t2jf8M7eoini7S3az6+zt5h354vs8+HtLbYTRSwrFT2j4msothNFLEsVX0NRD/QWbRFvb7EdGG1t+6Ot9o9x9hbNeT1fb7Huzk4uJHy9xbo9P2l+x8f3hRZTw/uFltc1OfAR9ZWK7wstSxXXF1rMuQVv2yiF/Y+or0R8baNwoG2Uwv5H1F8iux9RtyV8bSNTwts2ss+Hs20UTrSN7EfY94WWaO0O5PUSS8PvJTGf8BJbxeslCxWfl1gibi+JB/pZCxGfl5i/xusl6UA/K6XtfpYp4fSSdKCfZZ8Pp5fEdMBL7Ef4gJe466bSkamsdGQqKx2ZykpHprLSkamsxSXy1U3ZIs66qZT3dw9Ieb/myczDW3tlnhBn3VSS3a1W7TScdVO2iLNuyhZx1k3ZLu3qr9kSrv6a913xZX/N74tyYgOBlYqeUfH54kolHFFx+WI4sIHAQsTri2V/A4FU9j3NzMNbqH9iA4FUdssEwoENBBYiTl8MesIXzZ6wzxdNCZ8vOvvj1of06oHZLKuc3N3LOjGblU7MZpm/xtvLOjGblfZns9L+bFY6MZuVDsxmBXsY3NfLWtzwvtksW8Q5m7XIxDmPlNqJJS4rFT2j4muSrFTCERVPk2RxnX3zSAsR5zxSavtbspsavnmkxY9xziPla7eblfbnkdL+PFLankcK1m3qHPs1Ndxjv9newc859rtQcY79rlRcY7/mwlBvqyRb2wl6WyULEVerxP41zlZJNj8e5WyVZOsrVr5WiSnha5WYEt5WiX0+vK2ScKJVcu2P/S5EnGMcOZ7YSGClomdUXA2KpUo4ouJrUBxYM7sQcY5x5Li/kYC5tb9zfCLH7XW3ixPiHOPIabO4ZZGGb4xjIeIb41iIOMc4bJf2lUGbEr46aOe7wmhjWeXt7o7W61E64Yv5REdrqeLzxXyio7VUcfmieYm8HS1bxNnRyge+fZX3v321+DHejtbufFbQXQ+wFTwWYCu4HCCfmBXP1mJVvwMsVPSMis8BVirhiIrLAfKBWfGFiLdlZO2j520Zle3P9Np5OFtG+cSseLamslwukg/Mii9EnC2jfGBW3NzZ02eKsjv3Yyu4TDGe+PpS1hMLXlcqekbFZ4p6YsHrUsVlivHA15cWIl5TtCZwvKZY474p2hNJLlOMJ76+lOvmZ4QXaThNMR74+tJCxGmK1meVfaZoKrhM0VTwmGI7sbYrt3TCExcqekbF54krlXBExeOJ7cDSrnZiZZdc+59ulWv7063txMKu13nbNLNr94satoLr6b92v6hxYDLuyFycmLsje+fiFirOubiVimsu7sRUnIS0PxW3EHFNxZ2YiRNzGZRzJk6sUjbfTJwp4ZuJMyW8M3H2+fDNxJ2YiDsxD3dkGk7iiX7VSkXPqLjaEEuVcETF1YY4MAt3ZBJO0n6vStJ+r0rSdq/qyBycpM1O1YkpuBMzcEcm4Gxzdk3A2RKuCTjvK+JZ4sj8m+QTnaqVip5R8RliPtGpWqp4DPHE9NuR2TeRA50q2e5UHZl8E9nsVG3PvW1PvW3PvJkL+7ybKsqRZVdyZNmVHFl2JUeWXcmJZVeLK+TaU9HWcG6pKOaiK+ejX2T30bd3ZnXuqCjW/tmeR9/Owreh4kLDtZ+ireHbTnF7tmx7smx7riye2CBatJywsYWKnlHx2dhKJRxR8W0Qvd+CiSe2h5a6/yFMU8O7PfSJFkzdnPhPu49+2n300+6jf+LjbNJO1FSvVPSMiu/Jbydqqpcqnif/wKfZTnyYTdp+PbW0/XpqMw+fxonPspXdrQIPfJTtwCfZDnyQLexuJh1295IOX20l/W8v+v1//PGv//6nv/zH7//2x7/8+b9ef/b3t9Jf//j7//mnP3zwf//3n/+D/u3f/s9/jn/zP//6xz/96Y//37//51//8h9/+F///dc/vJXe/+531+d//keo9TXV8frflv/tX36XXv/k9bCl9Ioz/m2T179tcr3+ieKfvN7Cr/8t5fVPAiReXcd/ef+vvv9R6P+olbdqK/Jvf3//kP8H", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -260,7 +260,7 @@ expression: artifact "path": "std/collections/bounded_vec.nr" }, "7": { - "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::collections::bounded_vec::BoundedVec;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// We use load factor alpha_max = 0.75.\n// Upon exceeding it, assert will fail in order to inform the user\n// about performance degradation, so that he can adjust the capacity.\nglobal MAX_LOAD_FACTOR_NUMERATOR: u32 = 3;\nglobal MAX_LOAD_FACTOR_DEN0MINATOR: u32 = 4;\n\n/// `HashMap` is used to efficiently store and look up key-value pairs.\n///\n/// `HashMap` is a bounded type which can store anywhere from zero to `MaxLen` total elements.\n/// Note that due to hash collisions, the actual maximum number of elements stored by any particular\n/// hashmap is likely lower than `MaxLen`. This is true even with cryptographic hash functions since\n/// every hash value will be performed modulo `MaxLen`.\n///\n/// Example:\n///\n/// ```noir\n/// // Create a mapping from Fields to u32s with a maximum length of 12\n/// // using a poseidon2 hasher\n/// use std::hash::poseidon2::Poseidon2Hasher;\n/// let mut map: HashMap> = HashMap::default();\n///\n/// map.insert(1, 2);\n/// map.insert(3, 4);\n///\n/// let two = map.get(1).unwrap();\n/// ```\npub struct HashMap {\n _table: [Slot; N],\n\n /// Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the HashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl HashMap {\n /// Creates a hashmap with an existing `BuildHasher`. This can be used to ensure multiple\n /// hashmaps are created with the same hasher instance.\n ///\n /// Example:\n ///\n /// ```noir\n /// let my_hasher: BuildHasherDefault = Default::default();\n /// let hashmap: HashMap> = HashMap::with_hasher(my_hasher);\n /// assert(hashmap.is_empty());\n /// ```\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = [Slot::default(); N];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n /// Clears the hashmap, removing all key-value pairs from it.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(!map.is_empty());\n /// map.clear();\n /// assert(map.is_empty());\n /// ```\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = [Slot::default(); N];\n self._len = 0;\n }\n\n /// Returns `true` if the hashmap contains the given key. Unlike `get`, this will not also return\n /// the value associated with the key.\n ///\n /// Example:\n ///\n /// ```noir\n /// if map.contains_key(7) {\n /// let value = map.get(7);\n /// assert(value.is_some());\n /// } else {\n /// println(\"No value for key 7!\");\n /// }\n /// ```\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n self.get(key).is_some()\n }\n\n /// Returns `true` if the length of the hash map is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// assert(map.is_empty());\n ///\n /// map.insert(1, 2);\n /// assert(!map.is_empty());\n ///\n /// map.remove(1);\n /// assert(map.is_empty());\n /// ```\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n /// Returns a vector of each key-value pair present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let entries = map.entries();\n ///\n /// // The length of a hashmap may not be compile-time known, so we\n /// // need to loop over its capacity instead\n /// for i in 0..map.capacity() {\n /// if i < entries.len() {\n /// let (key, value) = entries.get(i);\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:entries\n pub fn entries(self) -> BoundedVec<(K, V), N> {\n // docs:end:entries\n let mut entries = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries.push(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n /// Returns a vector of each key present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let keys = map.keys();\n ///\n /// for i in 0..keys.max_len() {\n /// if i < keys.len() {\n /// let key = keys.get_unchecked(i);\n /// let value = map.get(key).unwrap_unchecked();\n /// println(f\"{key} -> {value}\");\n /// }\n /// }\n /// ```\n // docs:start:keys\n pub fn keys(self) -> BoundedVec {\n // docs:end:keys\n let mut keys = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys.push(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n /// Returns a vector of each value present in the hashmap.\n ///\n /// The length of the returned vector is always equal to the length of the hashmap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let values = map.values();\n ///\n /// for i in 0..values.max_len() {\n /// if i < values.len() {\n /// let value = values.get_unchecked(i);\n /// println(f\"Found value {value}\");\n /// }\n /// }\n /// ```\n // docs:start:values\n pub fn values(self) -> BoundedVec {\n // docs:end:values\n let mut values = BoundedVec::new();\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values.push(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n /// Iterates through each key-value pair of the HashMap, setting each key-value pair to the\n /// result returned from the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If this is not desired, use `iter_values_mut` if only values need to be mutated,\n /// or `entries` if neither keys nor values need to be mutated.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Add 1 to each key in the map, and double the value associated with that key.\n /// map.iter_mut(|k, v| (k + 1, v * 2));\n /// ```\n // docs:start:iter_mut\n pub fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, mutating each key to the result returned from\n /// the given function.\n ///\n /// Note that since keys can be mutated, the HashMap needs to be rebuilt as it is iterated\n /// through. If only iteration is desired and the keys are not intended to be mutated,\n /// prefer using `entries` instead.\n ///\n /// The iteration order is left unspecified. As a result, if two keys are mutated to become\n /// equal, which of the two values that will be present for the key in the resulting map is also unspecified.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Double each key, leaving the value associated with that key untouched\n /// map.iter_keys_mut(|k| k * 2);\n /// ```\n // docs:start:iter_keys_mut\n pub fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = HashMap::with_hasher(self._build_hasher);\n\n for i in 0..N {\n if i < self._len {\n let entry = entries.get_unchecked(i);\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n }\n\n self._table = new_map._table;\n }\n\n /// Iterates through the HashMap, applying the given function to each value and mutating the\n /// value to equal the result. This function is more efficient than `iter_mut` and `iter_keys_mut`\n /// because the keys are untouched and the underlying hashmap thus does not need to be reordered.\n ///\n /// Example:\n ///\n /// ```noir\n /// // Halve each value\n /// map.iter_values_mut(|v| v / 2);\n /// ```\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..N {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n /// Retains only the key-value pairs for which the given function returns true.\n /// Any key-value pairs for which the function returns false will be removed from the map.\n ///\n /// Example:\n ///\n /// ```noir\n /// map.retain(|k, v| (k != 0) & (v != 0));\n /// ```\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..N {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n /// Returns the current length of this hash map.\n ///\n /// Example:\n ///\n /// ```noir\n /// // This is equivalent to checking map.is_empty()\n /// assert(map.len() == 0);\n ///\n /// map.insert(1, 2);\n /// map.insert(3, 4);\n /// map.insert(5, 6);\n /// assert(map.len() == 3);\n ///\n /// // 3 was already present as a key in the hash map, so the length is unchanged\n /// map.insert(3, 7);\n /// assert(map.len() == 3);\n ///\n /// map.remove(1);\n /// assert(map.len() == 2);\n /// ```\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n /// Returns the maximum capacity of this hashmap. This is always equal to the capacity\n /// specified in the hashmap's type.\n ///\n /// Unlike hashmaps in general purpose programming languages, hashmaps in Noir have a\n /// static capacity that does not increase as the map grows larger. Thus, this capacity\n /// is also the maximum possible element count that can be inserted into the hashmap.\n /// Due to hash collisions (modulo the hashmap length), it is likely the actual maximum\n /// element count will be lower than the full capacity.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_map: HashMap> = HashMap::default();\n /// assert(empty_map.len() == 0);\n /// assert(empty_map.capacity() == 42);\n /// ```\n // docs:start:capacity\n pub fn capacity(_self: Self) -> u32 {\n // docs:end:capacity\n N\n }\n\n /// Retrieves a value from the hashmap, returning `Option::none()` if it was not found.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn get_example(map: HashMap>) {\n /// let x = map.get(12);\n ///\n /// if x.is_some() {\n /// assert(x.unwrap() == 42);\n /// }\n /// }\n /// ```\n // docs:start:get\n pub fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n should_break = true;\n }\n }\n }\n }\n\n result\n }\n\n /// Inserts a new key-value pair into the map. If the key was already in the map, its\n /// previous value will be overridden with the newly provided one.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(map.len() == 1);\n /// ```\n // docs:start:insert\n pub fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.assert_load_factor();\n\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n should_break = true;\n }\n }\n }\n }\n\n /// Removes the given key-value pair from the map. If the key was not already present\n /// in the map, this does nothing.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map: HashMap> = HashMap::default();\n /// map.insert(12, 42);\n /// assert(!map.is_empty());\n ///\n /// map.remove(12);\n /// assert(map.is_empty());\n ///\n /// // If a key was not present in the map, remove does nothing\n /// map.remove(12);\n /// assert(map.is_empty());\n /// ```\n // docs:start:remove\n pub fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n let mut should_break = false;\n\n for attempt in 0..N {\n if !should_break {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n should_break = true;\n }\n }\n }\n }\n }\n\n // Apply HashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(_self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % N\n }\n\n // Amount of elements in the table in relation to available slots exceeds alpha_max.\n // To avoid a comparatively more expensive division operation\n // we conduct cross-multiplication instead.\n // n / m >= MAX_LOAD_FACTOR_NUMERATOR / MAX_LOAD_FACTOR_DEN0MINATOR\n // n * MAX_LOAD_FACTOR_DEN0MINATOR >= m * MAX_LOAD_FACTOR_NUMERATOR\n fn assert_load_factor(self) {\n let lhs = self._len * MAX_LOAD_FACTOR_DEN0MINATOR;\n let rhs = self._table.len() * MAX_LOAD_FACTOR_NUMERATOR;\n let exceeded = lhs >= rhs;\n assert(!exceeded, \"Load factor is exceeded, consider increasing the capacity.\");\n }\n}\n\n// Equality class on HashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for HashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n /// Checks if two HashMaps are equal.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut map1: HashMap> = HashMap::default();\n /// let mut map2: HashMap> = HashMap::default();\n ///\n /// map1.insert(1, 2);\n /// map1.insert(3, 4);\n ///\n /// map2.insert(3, 4);\n /// map2.insert(1, 2);\n ///\n /// assert(map1 == map2);\n /// ```\n fn eq(self, other: HashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n let other_value = other.get(key);\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for HashMap\nwhere\n B: BuildHasher + Default,\n{\n /// Constructs an empty HashMap.\n ///\n /// Example:\n ///\n /// ```noir\n /// let hashmap: HashMap> = HashMap::default();\n /// assert(hashmap.is_empty());\n /// ```\n fn default() -> Self {\n // docs:end:default\n let _build_hasher = B::default();\n let map: HashMap = HashMap::with_hasher(_build_hasher);\n map\n }\n}\n", "path": "std/collections/map.nr" }, "17": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index ae6c077c04b..ecda18b8e8a 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -52,7 +52,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_0.snap index ae6c077c04b..ecda18b8e8a 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_0.snap @@ -52,7 +52,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index ae6c077c04b..ecda18b8e8a 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -52,7 +52,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 1318b5369a0..ca49c429ac8 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -47,7 +47,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_0.snap index 1318b5369a0..ca49c429ac8 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_0.snap @@ -47,7 +47,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 1318b5369a0..ca49c429ac8 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/import/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -47,7 +47,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "51": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index d7e8b24031f..3d102a8c842 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -130,7 +130,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_0.snap index d7e8b24031f..3d102a8c842 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_0.snap @@ -130,7 +130,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index d7e8b24031f..3d102a8c842 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -130,7 +130,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 1059c2656a1..321fcd601a4 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -87,7 +87,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_0.snap index a387524a3c1..105357617af 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_0.snap @@ -87,7 +87,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index a9f32dbc41a..cafc0d2c65f 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/merkle_insert/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -87,7 +87,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index df91e9434f8..dec23e2a2f6 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -95,7 +95,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_0.snap index df91e9434f8..dec23e2a2f6 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_0.snap @@ -95,7 +95,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index df91e9434f8..dec23e2a2f6 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -95,7 +95,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 284a66b1996..50fa947e174 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_0.snap index 284a66b1996..50fa947e174 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_0.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 284a66b1996..50fa947e174 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_check/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -83,7 +83,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 315c626461e..e1dbe75f74f 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -86,7 +86,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_0.snap index 315c626461e..e1dbe75f74f 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_0.snap @@ -86,7 +86,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 315c626461e..e1dbe75f74f 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -86,7 +86,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 74b101b8d31..69bbf376113 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -79,7 +79,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_0.snap index 74b101b8d31..69bbf376113 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_0.snap @@ -79,7 +79,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 74b101b8d31..69bbf376113 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_commitment/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -79,7 +79,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index a0768b384f4..144668df1ad 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -59,7 +59,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_0.snap index a0768b384f4..144668df1ad 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_0.snap @@ -59,7 +59,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index a0768b384f4..144668df1ad 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -59,7 +59,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 9b3f98bfcd7..9e1b0eae1a1 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -54,7 +54,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_0.snap index 6b5e7fdb5f6..78a287828da 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_0.snap @@ -54,7 +54,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 6b5e7fdb5f6..78a287828da 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/pedersen_hash/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -54,7 +54,7 @@ expression: artifact "path": "std/field/bn254.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 2ae51b4f87b..d15be9b3d10 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -144,7 +144,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_0.snap index 2ae51b4f87b..d15be9b3d10 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_0.snap @@ -144,7 +144,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 2ae51b4f87b..d15be9b3d10 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -144,7 +144,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index b5270fb68b4..fefe6945775 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -100,7 +100,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_0.snap index 11f431f874f..9de2a539c7d 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_0.snap @@ -100,7 +100,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 11f431f874f..9de2a539c7d 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/simple_shield/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -100,7 +100,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "50": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index 8238a6519e3..03e619d35d4 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -233,7 +233,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32921 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32909), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32909 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 109 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32921 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Field, value: 1 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32845), bit_size: Field, value: 2 }, Const { destination: Direct(32846), bit_size: Field, value: 3 }, Const { destination: Direct(32847), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32848), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32849), bit_size: Field, value: 5 }, Const { destination: Direct(32850), bit_size: Field, value: 6 }, Const { destination: Direct(32851), bit_size: Field, value: 7 }, Const { destination: Direct(32852), bit_size: Field, value: 11 }, Const { destination: Direct(32853), bit_size: Field, value: 12 }, Const { destination: Direct(32854), bit_size: Field, value: 13 }, Const { destination: Direct(32855), bit_size: Field, value: 30 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 34 }, Const { destination: Direct(32858), bit_size: Field, value: 42 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 50 }, Const { destination: Direct(32863), bit_size: Integer(U8), value: 51 }, Const { destination: Direct(32864), bit_size: Field, value: 55 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32866), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 69 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 73 }, Const { destination: Direct(32869), bit_size: Field, value: 75 }, Const { destination: Direct(32870), bit_size: Field, value: 77 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32872), bit_size: Field, value: 79 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32882), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32884), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32885), bit_size: Field, value: 108 }, Const { destination: Direct(32886), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32887), bit_size: Field, value: 109 }, Const { destination: Direct(32888), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32889), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32890), bit_size: Integer(U8), value: 112 }, Const { destination: Direct(32891), bit_size: Field, value: 112 }, Const { destination: Direct(32892), bit_size: Field, value: 113 }, Const { destination: Direct(32893), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32894), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32895), bit_size: Field, value: 115 }, Const { destination: Direct(32896), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32897), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32898), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32899), bit_size: Field, value: 118 }, Const { destination: Direct(32900), bit_size: Integer(U8), value: 119 }, Const { destination: Direct(32901), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32902), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32903), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32904), bit_size: Field, value: 134 }, Const { destination: Direct(32905), bit_size: Field, value: 135 }, Const { destination: Direct(32906), bit_size: Field, value: 136 }, Const { destination: Direct(32907), bit_size: Field, value: 138 }, Const { destination: Direct(32908), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Return, Call { location: 188 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 194 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 440 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32848) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 750 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 153 }, Call { location: 938 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 941 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1521 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1690 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1796 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2086 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2530 }, Mov { destination: Direct(0), source: Relative(0) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 193 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 230 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 250 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(9), location: 255 }, Call { location: 3463 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 262 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Direct(32842) }, Mov { destination: Relative(18), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(9), location: 277 }, Call { location: 3572 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(7) }, Store { destination_pointer: Relative(9), source: Direct(32868) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32888) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32893) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32877) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32902) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32898) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32874) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32897) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32903) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32897) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32902) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32903) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32879) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32893) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32881) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32874) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32886) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32883) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32901) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32860) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(7), location: 402 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, Mov { destination: Relative(14), source: Relative(13) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(15) }, Mov { destination: Direct(32772), source: Relative(14) }, Mov { destination: Direct(32773), source: Relative(16) }, Call { location: 23 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(14), source: Direct(32844) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(9) } }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 419 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(5), location: 424 }, Call { location: 3723 }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(5), source: Relative(14) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 439 }, Call { location: 3726 }, Return, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 476 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 480 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 737 }, Jump { location: 483 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 491 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(8), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(9), bit_size: Integer(U8), value: 77 }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(12), source: Relative(6) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32894) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32881) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(9) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32881) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32894) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32861) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32859) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32902) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32903) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32860) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 597 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(9) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(12) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(13) }, Call { location: 23 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Direct(32842) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(6), source: Relative(11) }, JumpIf { condition: Relative(5), location: 611 }, Call { location: 3572 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32868) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32888) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32894) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32893) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32877) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32902) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32898) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32874) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32884) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32875) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32880) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32902) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32880) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32879) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32893) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32881) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32894) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32874) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32886) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32883) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32901) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32860) }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(2), rhs: Relative(6) }, JumpIf { condition: Relative(3), location: 736 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(5) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(9) }, Mov { destination: Direct(32772), source: Relative(8) }, Mov { destination: Direct(32773), source: Relative(10) }, Call { location: 23 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, Store { destination_pointer: Relative(8), source: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(5), size: Relative(4) } }, Return, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(6) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(4) }, Jump { location: 480 }, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 786 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 816 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 821 }, Call { location: 3729 }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Direct(32842) }, Mov { destination: Relative(14), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(11) }, Mov { destination: Relative(6), source: Relative(12) }, JumpIf { condition: Relative(5), location: 835 }, Call { location: 3572 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 120 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32867) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32890) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32876) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32877) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32902) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32888) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32900) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32873) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32898) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32874) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32884) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32897) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32903) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32859) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32875) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32897) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32880) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32889) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32902) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32880) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32889) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32903) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32860) }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(6), rhs: Relative(3) }, JumpIf { condition: Relative(1), location: 937 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(5) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(10) }, Mov { destination: Direct(32772), source: Relative(8) }, Mov { destination: Direct(32773), source: Relative(11) }, Call { location: 23 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Store { destination_pointer: Relative(8), source: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(5), size: Relative(4) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 977 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 985 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Direct(32868) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32896) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32880) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32902) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32896) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32901) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32903) }, Const { destination: Relative(9), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1225 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1481 }, Jump { location: 1228 }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1236 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(10) }, Store { destination_pointer: Relative(11), source: Direct(32902) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32865) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32894) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32859) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32900) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32881) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32865) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32863) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32862) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(10), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(8), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1325 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(8) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 1330 }, Call { location: 3732 }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1336 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(8) }, Store { destination_pointer: Relative(11), source: Direct(32871) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32879) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32894) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32902) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32873) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32860) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1415 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1431 }, Jump { location: 1418 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(4) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3735 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32838) }, JumpIf { condition: Relative(2), location: 1430 }, Call { location: 3764 }, Return, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1444 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, JumpIf { condition: Relative(11), location: 1478 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(7) } }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 1415 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1495 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1503 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(9), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(13), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 1225 }, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1586 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1590 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(9), location: 1659 }, Jump { location: 1593 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1602 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1613 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(10) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 3767 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(12), location: 1629 }, Call { location: 3866 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(10) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3767 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1658 }, Call { location: 3869 }, Return, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(10) }, Mov { destination: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(10) }, Mov { destination: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(9) }, Jump { location: 1590 }, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1726 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32849) }, Mov { destination: Relative(12), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32845) }, Mov { destination: Relative(12), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32852) }, Mov { destination: Relative(12), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32907) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3872 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1775 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, JumpIf { condition: Relative(4), location: 1780 }, Call { location: 4041 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32844) }, Mov { destination: Relative(12), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(9) }, Mov { destination: Relative(4), source: Relative(10) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1795 }, Call { location: 4044 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1865 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(9) }, Mov { destination: Relative(6), source: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1891 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1902 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(32844) }, Mov { destination: Relative(14), source: Direct(32904) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1920 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1946 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1957 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32905) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(11), source_pointer: Relative(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, Mov { destination: Relative(12), source: Relative(17) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5089 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 1993 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2004 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32906) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5158 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(16) }, JumpIf { condition: Relative(4), location: 2037 }, Call { location: 5334 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2058 }, Call { location: 5337 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32845) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32849) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32852) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5340 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2085 }, Call { location: 5382 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32885) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5385 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32887) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5498 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2173 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(7), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2199 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2210 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Direct(32844) }, Mov { destination: Relative(17), source: Direct(32891) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2228 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2254 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2265 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2283 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Const { destination: Relative(5), bit_size: Field, value: 15 }, Const { destination: Relative(14), bit_size: Field, value: 33 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Const { destination: Relative(15), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32874) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32903) }, JumpIf { condition: Relative(14), location: 2417 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, Mov { destination: Relative(18), source: Relative(17) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Store { destination_pointer: Relative(18), source: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Trap { revert_data: HeapVector { pointer: Relative(17), size: Relative(15) } }, Const { destination: Relative(10), bit_size: Field, value: 35 }, Const { destination: Relative(14), bit_size: Field, value: 65 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(17) }, JumpIf { condition: Relative(5), location: 2440 }, Call { location: 5337 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32895) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5639 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(5), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5089 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2476 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2487 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32899) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5158 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(1), bit_size: Field, value: 70 }, Const { destination: Relative(4), bit_size: Field, value: 66 }, Const { destination: Relative(10), bit_size: Field, value: 130 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5340 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, JumpIf { condition: Relative(1), location: 2529 }, Call { location: 5382 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32853) }, Mov { destination: Relative(10), source: Direct(32858) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2578 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 2584 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2591 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Direct(32842) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5744 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2618 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(4), location: 2624 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2641 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 2647 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(11) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2653 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2673 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(11) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 2680 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(11) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(1) }, Mov { destination: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2697 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(11), location: 2703 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2709 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32843) }, Mov { destination: Relative(19), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Field, value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32846) }, Mov { destination: Relative(19), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32849) }, Mov { destination: Relative(19), source: Direct(32850) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2750 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 2756 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(1) }, Mov { destination: Relative(20), source: Direct(32846) }, Mov { destination: Relative(21), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2774 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 2780 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(2) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(1) }, Mov { destination: Relative(21), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 2797 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, JumpIf { condition: Relative(14), location: 2803 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(14) }, Store { destination_pointer: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32859) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32900) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32863) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32862) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32903) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(14), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 2890 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(2) }, Mov { destination: Relative(20), source: Relative(3) }, Mov { destination: Relative(21), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3735 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(18), source_pointer: Relative(4) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 2908 }, Call { location: 938 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(18), location: 2914 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(4) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2921 }, Call { location: 938 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(18) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 23 }, Mov { destination: Relative(23), source: Direct(0) }, Mov { destination: Relative(24), source: Relative(5) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(22) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(18), source: Relative(24) }, Mov { destination: Relative(21), source: Relative(25) }, JumpIf { condition: Relative(18), location: 3049 }, Jump { location: 2936 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32898) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32884) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32897) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32901) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32902) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32865) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32894) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32896) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32859) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32884) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32896) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32865) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32861) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(4), size: 19 }), HeapArray(HeapArray { pointer: Relative(7), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3075 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3058 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(7), location: 3074 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, Jump { location: 3075 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3084 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5767 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3100 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32869) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5639 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5385 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5498 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3872 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6299 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, JumpIf { condition: Relative(4), location: 3268 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, Return, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6398 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3287 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3305 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 3309 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3312 }, Jump { location: 3462 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3320 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 3330 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 3330 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 3334 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 3339 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 3345 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 3389 }, Jump { location: 3384 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 3387 }, Jump { location: 3401 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 3401 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 3395 }, Call { location: 6555 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 3401 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 3407 }, Jump { location: 3404 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 3309 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6561 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 3428 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 6575 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 3462 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3479 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3497 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3501 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 3504 }, Jump { location: 3569 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3510 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 3520 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 3520 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3524 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3529 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 3535 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 3559 }, Jump { location: 3563 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 3566 }, Jump { location: 3562 }, Jump { location: 3563 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 3501 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 3569 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3585 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3603 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3607 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 3610 }, Jump { location: 3722 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3618 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 3628 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 3628 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 3632 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 3637 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, JumpIf { condition: Relative(12), location: 3643 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(8), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 3667 }, Jump { location: 3671 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 3674 }, Jump { location: 3670 }, Jump { location: 3671 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 3607 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 3680 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Store { destination_pointer: Relative(9), source: Relative(14) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 3717 }, Call { location: 6601 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 3722 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8591465503772373437 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3777 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3785 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 3790 }, Jump { location: 3805 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3797 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 3801 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 3807 }, Jump { location: 3804 }, Jump { location: 3805 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 3809 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 3835 }, Jump { location: 3863 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3841 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 3858 }, Jump { location: 3856 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 3863 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 3863 }, Jump { location: 3861 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 3863 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 3801 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3881 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32892) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32904) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32905) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3890 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 3894 }, Jump { location: 3893 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 3899 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(13), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 3923 }, Jump { location: 4038 }, JumpIf { condition: Relative(7), location: 3981 }, Jump { location: 3925 }, JumpIf { condition: Relative(8), location: 3971 }, Jump { location: 3927 }, JumpIf { condition: Relative(10), location: 3961 }, Jump { location: 3929 }, JumpIf { condition: Relative(11), location: 3951 }, Jump { location: 3931 }, JumpIf { condition: Relative(12), location: 3941 }, Jump { location: 3933 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32907) }, JumpIf { condition: Relative(17), location: 3937 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(19) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Relative(18) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(17), rhs: Direct(32864) }, Mov { destination: Relative(13), source: Relative(19) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(16), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(17), bit_size: U1 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(18), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, JumpIf { condition: Relative(13), location: 4038 }, Jump { location: 3990 }, Load { destination: Relative(13), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(19), location: 3995 }, Call { location: 6601 }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, JumpIf { condition: Relative(20), location: 4004 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 6575 }, Mov { destination: Relative(20), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Store { destination_pointer: Relative(22), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(20) }, Call { location: 6575 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 6575 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 6575 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Jump { location: 4038 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 3890 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4072 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4076 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4286 }, Jump { location: 4079 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4087 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32901) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4258 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4284 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4288 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4307 }, Jump { location: 4327 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4315 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6608 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4327 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4076 }, Call { location: 188 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 4337 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 4343 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, Load { destination: Relative(1), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32848) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(1), source: Relative(2) }, Return, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4387 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 4390 }, Jump { location: 4505 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4398 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 4504 }, Jump { location: 4403 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4411 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6664 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4428 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 4436 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 4502 }, Jump { location: 4440 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6701 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 4456 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4462 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 4476 }, Jump { location: 4500 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4482 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 4488 }, Call { location: 6601 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 4500 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4387 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4387 }, Jump { location: 4505 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4531 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4535 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4749 }, Jump { location: 4538 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4546 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4721 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4747 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4751 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4770 }, Jump { location: 4790 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4778 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6608 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4790 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4535 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4818 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4822 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5038 }, Jump { location: 4825 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4833 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5010 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5036 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5040 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5064 }, Jump { location: 5086 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5072 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 5086 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4822 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5096 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 5102 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5124 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(1), location: 5129 }, Jump { location: 5127 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, BinaryIntOp { destination: Relative(1), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(1), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(1) }, Jump { location: 5124 }, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5183 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 5186 }, Jump { location: 5301 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5194 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 5300 }, Jump { location: 5199 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5207 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6664 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5224 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 5232 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 5298 }, Jump { location: 5236 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6882 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5252 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 5258 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 5272 }, Jump { location: 5296 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5278 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 5284 }, Call { location: 6601 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 5296 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5183 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5183 }, Jump { location: 5301 }, Return, Call { location: 188 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5312 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5316 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 5321 }, Jump { location: 5319 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5316 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5350 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5354 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 5359 }, Jump { location: 5357 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5354 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5395 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32870) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32872) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32885) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5441 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 5451 }, Jump { location: 5444 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 5453 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Load { destination: Relative(10), source_pointer: Relative(19) }, JumpIf { condition: Relative(12), location: 5482 }, Jump { location: 5465 }, JumpIf { condition: Relative(13), location: 5479 }, Jump { location: 5467 }, JumpIf { condition: Relative(14), location: 5476 }, Jump { location: 5469 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, JumpIf { condition: Relative(17), location: 5473 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32908) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(15) }, Mov { destination: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 5441 }, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5507 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32870) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32872) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32885) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5514 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 5518 }, Jump { location: 5517 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 5523 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 5559 }, Jump { location: 5636 }, JumpIf { condition: Relative(7), location: 5578 }, Jump { location: 5561 }, JumpIf { condition: Relative(8), location: 5575 }, Jump { location: 5563 }, JumpIf { condition: Relative(10), location: 5572 }, Jump { location: 5565 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, JumpIf { condition: Relative(17), location: 5569 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32908) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6561 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(16) }, JumpIf { condition: Relative(19), location: 5602 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 6575 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 6575 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 6575 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(18) }, Jump { location: 5636 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 5514 }, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5649 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5693 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 5703 }, Jump { location: 5696 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 5705 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(18) }, JumpIf { condition: Relative(12), location: 5726 }, Jump { location: 5717 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32895) }, JumpIf { condition: Relative(16), location: 5721 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(16), op: Mul, lhs: Relative(15), rhs: Direct(32845) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 5731 }, BinaryFieldOp { destination: Relative(16), op: Add, lhs: Relative(15), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 5731 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(13) }, Mov { destination: Relative(20), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 5693 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, JumpIf { condition: Relative(4), location: 5758 }, Jump { location: 5766 }, JumpIf { condition: Relative(4), location: 5761 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(5), rhs: Direct(32858) }, JumpIf { condition: Relative(1), location: 5765 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Jump { location: 5766 }, Return, Call { location: 188 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5774 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(7), source: Relative(11) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5792 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(10) }, Store { destination_pointer: Relative(12), source: Direct(32902) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32883) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32882) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32865) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32882) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32903) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5876 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5880 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(6), location: 6066 }, Jump { location: 5883 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5889 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(13) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5907 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5915 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5919 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(6), location: 6018 }, Jump { location: 5922 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(6), source: Relative(11) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(3) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, Load { destination: Relative(1), source_pointer: Relative(8) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5982 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5986 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(1), location: 5990 }, Jump { location: 5989 }, Return, JumpIf { condition: Relative(1), location: 5992 }, Call { location: 6558 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(4) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6002 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6010 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(3), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(1)), HeapArray(HeapArray { pointer: Relative(10), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(1) }, Jump { location: 5986 }, JumpIf { condition: Relative(6), location: 6020 }, Call { location: 6558 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6030 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 6049 }, Call { location: 938 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 6057 }, Call { location: 938 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(6)), MemoryAddress(Relative(12)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), HeapArray(HeapArray { pointer: Relative(17), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 5919 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(6), location: 6069 }, Jump { location: 6102 }, JumpIf { condition: Relative(6), location: 6071 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6087 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6095 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(10), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(9)), MemoryAddress(Relative(6)), HeapArray(HeapArray { pointer: Relative(14), size: 16 }), HeapArray(HeapArray { pointer: Relative(15), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 6102 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 5880 }, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7046 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6123 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7164 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6141 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 6145 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 6148 }, Jump { location: 6298 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6156 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 6166 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 6166 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6170 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6175 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 6181 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 6225 }, Jump { location: 6220 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6223 }, Jump { location: 6237 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 6237 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 6231 }, Call { location: 6555 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 6237 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 6243 }, Jump { location: 6240 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 6145 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7200 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 6264 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 6575 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6298 }, Return, Call { location: 188 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6309 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6317 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 6322 }, Jump { location: 6337 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6329 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6333 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 6339 }, Jump { location: 6336 }, Jump { location: 6337 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 6341 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 6367 }, Jump { location: 6395 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6373 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 7210 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 6390 }, Jump { location: 6388 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 6395 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 6395 }, Jump { location: 6393 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 6395 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 6333 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6407 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 6413 }, Call { location: 6555 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6420 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 6515 }, Jump { location: 6426 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6434 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 6441 }, Call { location: 6552 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7316 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6466 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 6480 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 6490 }, Jump { location: 6483 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(9) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Jump { location: 6515 }, JumpIf { condition: Relative(5), location: 6492 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 6480 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6537 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7372 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 6579 }, Jump { location: 6581 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 6600 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 6598 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 6591 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 6600 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, BinaryFieldOp { destination: Relative(3), op: LessThan, lhs: Relative(1), rhs: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 6619 }, Jump { location: 6636 }, JumpIf { condition: Direct(32781), location: 6621 }, Jump { location: 6625 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 6635 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 6635 }, Jump { location: 6648 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 6648 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 6662 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 6662 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 6655 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 6673 }, Jump { location: 6677 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 6699 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 6698 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 6691 }, Jump { location: 6699 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32892) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32904) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32905) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6713 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 6746 }, Jump { location: 6716 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6721 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(8) }, JumpIf { condition: Relative(7), location: 6726 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Load { destination: Relative(13), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 6750 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(16) }, JumpIf { condition: Relative(7), location: 6755 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(8), location: 6816 }, Jump { location: 6760 }, JumpIf { condition: Relative(9), location: 6806 }, Jump { location: 6762 }, JumpIf { condition: Relative(10), location: 6796 }, Jump { location: 6764 }, JumpIf { condition: Relative(11), location: 6786 }, Jump { location: 6766 }, JumpIf { condition: Relative(12), location: 6776 }, Jump { location: 6768 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32907) }, JumpIf { condition: Relative(13), location: 6772 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(14), rhs: Relative(15) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(13), rhs: Direct(32864) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(14), rhs: Direct(32840) }, Not { destination: Relative(14), source: Relative(13), bit_size: U1 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(15), rhs: Direct(32840) }, Not { destination: Relative(15), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(15) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, JumpIf { condition: Relative(2), location: 6825 }, Jump { location: 6857 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 6830 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(13) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 6855 }, Call { location: 6555 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 6857 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6713 }, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 6864 }, Jump { location: 6866 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 6881 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 6878 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 6871 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 6881 }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32899) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6892 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 6947 }, Jump { location: 6895 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(3), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 6900 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, JumpIf { condition: Relative(7), location: 6910 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(11) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(4) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Store { destination_pointer: Relative(6), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Load { destination: Relative(11), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 6951 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, JumpIf { condition: Relative(7), location: 6958 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(10), location: 6977 }, Jump { location: 6963 }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32906) }, JumpIf { condition: Relative(11), location: 6967 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 6987 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 6987 }, JumpIf { condition: Relative(2), location: 6989 }, Jump { location: 7043 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 6994 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(12) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(14) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, Store { destination_pointer: Relative(18), source: Relative(19) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(2) }, JumpIf { condition: Relative(12), location: 7041 }, Call { location: 6555 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 7043 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6892 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7055 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 7061 }, Call { location: 6555 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7068 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 7163 }, Jump { location: 7074 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7082 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 7089 }, Call { location: 6552 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7449 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 7114 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 7505 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7128 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 7138 }, Jump { location: 7131 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(9) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Jump { location: 7163 }, JumpIf { condition: Relative(5), location: 7140 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7128 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 7185 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7372 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Call { location: 188 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7223 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 7164 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7241 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7245 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7248 }, Jump { location: 7313 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7254 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 7264 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 7264 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7268 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7273 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 7279 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 7303 }, Jump { location: 7307 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 7310 }, Jump { location: 7306 }, Jump { location: 7307 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 7245 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 7313 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 7337 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7344 }, Jump { location: 7340 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7352 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6608 }, Mov { destination: Relative(9), source: Direct(32773) }, Mov { destination: Relative(10), source: Direct(32774) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(3) }, Jump { location: 7337 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7379 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 7801 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7412 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 7416 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 7430 }, Jump { location: 7419 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 7831 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(10) }, Return, JumpIf { condition: Relative(5), location: 7432 }, Call { location: 6558 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7856 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 7416 }, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 7470 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7477 }, Jump { location: 7473 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7485 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6608 }, Mov { destination: Relative(9), source: Direct(32773) }, Mov { destination: Relative(10), source: Direct(32774) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32839) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(3) }, Jump { location: 7470 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7530 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7534 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 7750 }, Jump { location: 7537 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7545 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7722 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 7748 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 7752 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 7776 }, Jump { location: 7798 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7784 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 7798 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7534 }, Call { location: 188 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(32837) }, Mov { destination: Relative(1), source: Relative(2) }, Mov { destination: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Call { location: 188 }, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 7837 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(7) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 7913 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(7), location: 7862 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 7889 }, Jump { location: 7866 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 7873 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(7), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 7884 }, Call { location: 6555 }, Store { destination_pointer: Relative(1), source: Relative(10) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7912 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7913 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Direct(32842) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Jump { location: 7912 }, Return, Call { location: 188 }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7916 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 7944 }, Jump { location: 7919 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7926 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32847) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 7948 }, Jump { location: 7971 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 6860 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7971 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 7916 }]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -248,7 +248,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { @@ -260,7 +260,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_0.snap index 2f96738f582..120467190c2 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_0.snap @@ -233,7 +233,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32917 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32905), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32905 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 105 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32917 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Field, value: 1 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32845), bit_size: Field, value: 2 }, Const { destination: Direct(32846), bit_size: Field, value: 3 }, Const { destination: Direct(32847), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32848), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32849), bit_size: Field, value: 5 }, Const { destination: Direct(32850), bit_size: Field, value: 6 }, Const { destination: Direct(32851), bit_size: Field, value: 7 }, Const { destination: Direct(32852), bit_size: Field, value: 11 }, Const { destination: Direct(32853), bit_size: Field, value: 12 }, Const { destination: Direct(32854), bit_size: Field, value: 13 }, Const { destination: Direct(32855), bit_size: Field, value: 30 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 34 }, Const { destination: Direct(32858), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 50 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 51 }, Const { destination: Direct(32863), bit_size: Field, value: 55 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32866), bit_size: Field, value: 75 }, Const { destination: Direct(32867), bit_size: Field, value: 77 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32869), bit_size: Field, value: 79 }, Const { destination: Direct(32870), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32872), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32882), bit_size: Field, value: 108 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32884), bit_size: Field, value: 109 }, Const { destination: Direct(32885), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32886), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32887), bit_size: Field, value: 112 }, Const { destination: Direct(32888), bit_size: Field, value: 113 }, Const { destination: Direct(32889), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32890), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32891), bit_size: Field, value: 115 }, Const { destination: Direct(32892), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32893), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32894), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32895), bit_size: Field, value: 118 }, Const { destination: Direct(32896), bit_size: Integer(U8), value: 119 }, Const { destination: Direct(32897), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32898), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32899), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32900), bit_size: Field, value: 134 }, Const { destination: Direct(32901), bit_size: Field, value: 135 }, Const { destination: Direct(32902), bit_size: Field, value: 136 }, Const { destination: Direct(32903), bit_size: Field, value: 138 }, Const { destination: Direct(32904), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Return, Call { location: 1533 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 145 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 165 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(11), location: 170 }, Call { location: 1736 }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 177 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, JumpIf { condition: Relative(11), location: 192 }, Call { location: 1845 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 73 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(9), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(11) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32890) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32889) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32894) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32871) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32881) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32893) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32872) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32893) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32877) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32877) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32889) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32878) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32890) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32871) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32883) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32897) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32859) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 318 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32844) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 335 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32838) }, JumpIf { condition: Relative(8), location: 340 }, Call { location: 1996 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Direct(32838) }, Mov { destination: Relative(19), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(16) }, Mov { destination: Relative(8), source: Relative(17) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 355 }, Call { location: 1999 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32847) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Load { destination: Relative(17), source_pointer: Relative(7) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 394 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(17) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 398 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1520 }, Jump { location: 401 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(8), source_pointer: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 409 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(12), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 112 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(12) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(13) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32872) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32860) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32858) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32898) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32899) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32859) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 516 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(13) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(12) } }, Load { destination: Relative(8), source_pointer: Relative(14) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(17) }, Mov { destination: Relative(12), source: Relative(18) }, JumpIf { condition: Relative(10), location: 530 }, Call { location: 1845 }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(6), rhs: Relative(12) }, JumpIf { condition: Relative(4), location: 554 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(8) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(13) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(14) }, Call { location: 23 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(8), size: Relative(7) } }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32848) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 596 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(12) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(12) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 626 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 631 }, Call { location: 2002 }, Load { destination: Relative(7), source_pointer: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(7) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(17) }, Mov { destination: Relative(10), source: Relative(18) }, JumpIf { condition: Relative(9), location: 645 }, Call { location: 1845 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(6), bit_size: Integer(U8), value: 120 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(9) }, Store { destination_pointer: Relative(13), source: Relative(4) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(15) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32885) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32870) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32881) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32899) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32858) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32872) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32899) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(6), location: 748 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(13) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(16) }, Mov { destination: Direct(32772), source: Relative(15) }, Mov { destination: Direct(32773), source: Relative(17) }, Call { location: 23 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(16) }, Store { destination_pointer: Relative(15), source: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(9) } }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 754 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 791 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(6) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 799 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32890) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32875) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32892) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32879) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32877) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32856) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32898) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32875) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32892) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32897) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32899) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(16), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32890) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32889) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32893) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32873) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32871) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32883) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(4) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32889) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32897) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32890) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32897) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32894) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32871) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32893) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1039 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 1480 }, Jump { location: 1042 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(12), source: Direct(32898) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32864) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32893) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32858) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32864) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32862) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32861) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32899) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(11), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1139 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 1144 }, Call { location: 2005 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1150 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32868) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32876) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32893) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32898) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32870) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32899) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32859) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1229 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(5), location: 1430 }, Jump { location: 1232 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(8) }, Mov { destination: Relative(13), source: Relative(9) }, Mov { destination: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 2008 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32838) }, JumpIf { condition: Relative(5), location: 1244 }, Call { location: 2037 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1308 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1312 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(10), location: 1399 }, Jump { location: 1315 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1324 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1335 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(1) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(4) }, Mov { destination: Relative(20), source: Relative(10) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 2040 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(12), location: 1351 }, Call { location: 2139 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(7) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(4) }, Mov { destination: Relative(20), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 2040 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(7), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1378 }, Call { location: 2142 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2145 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2251 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2541 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2985 }, Mov { destination: Direct(0), source: Relative(0) }, Return, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(9) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(10) }, Jump { location: 1312 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1443 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(11) }, Mov { destination: Relative(20), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, JumpIf { condition: Relative(12), location: 1477 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(7) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(15) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(16) }, Call { location: 23 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(7), size: Relative(5) } }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(5) }, Jump { location: 1229 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(12) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1494 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1502 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(7), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(5)), MemoryAddress(Relative(4)), HeapArray(HeapArray { pointer: Relative(13), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(7), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(9) }, Mov { destination: Relative(21), source: Relative(10) }, Mov { destination: Relative(22), source: Relative(5) }, Mov { destination: Relative(23), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(4) }, Jump { location: 1039 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, Mov { destination: Relative(20), source: Relative(16) }, Mov { destination: Relative(21), source: Relative(4) }, Mov { destination: Relative(22), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 398 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 1538 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4231 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1560 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1578 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 1582 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 1585 }, Jump { location: 1735 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1593 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 1603 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 1603 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 1607 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 1612 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 1618 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 1662 }, Jump { location: 1657 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 1660 }, Jump { location: 1674 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 1674 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 1668 }, Call { location: 4434 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 1674 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 1680 }, Jump { location: 1677 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 1582 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 4440 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 1701 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 4454 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 4454 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 1735 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1752 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1770 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 1774 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 1777 }, Jump { location: 1842 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1783 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 1793 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 1793 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1797 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1802 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 1808 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 1832 }, Jump { location: 1836 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 1839 }, Jump { location: 1835 }, Jump { location: 1836 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 1774 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 1842 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1858 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1876 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 1880 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 1883 }, Jump { location: 1995 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1891 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 1901 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 1901 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 1905 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 1910 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, JumpIf { condition: Relative(12), location: 1916 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(8), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 1940 }, Jump { location: 1944 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 1947 }, Jump { location: 1943 }, Jump { location: 1944 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 1880 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 1953 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Store { destination_pointer: Relative(9), source: Relative(14) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 1990 }, Call { location: 4480 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 1995 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8591465503772373437 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2058 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 2063 }, Jump { location: 2078 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2070 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 2074 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 2080 }, Jump { location: 2077 }, Jump { location: 2078 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 2082 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 2108 }, Jump { location: 2136 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2114 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 2131 }, Jump { location: 2129 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 2136 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 2136 }, Jump { location: 2134 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 2136 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 2074 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2181 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32849) }, Mov { destination: Relative(12), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32845) }, Mov { destination: Relative(12), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32852) }, Mov { destination: Relative(12), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 4483 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2230 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, JumpIf { condition: Relative(4), location: 2235 }, Call { location: 4621 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32844) }, Mov { destination: Relative(12), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(9) }, Mov { destination: Relative(4), source: Relative(10) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 2250 }, Call { location: 4624 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 2320 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(9) }, Mov { destination: Relative(6), source: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2346 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2357 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(32844) }, Mov { destination: Relative(14), source: Direct(32900) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2375 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2401 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2412 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(11), source_pointer: Relative(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, Mov { destination: Relative(12), source: Relative(17) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5786 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2448 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2459 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5855 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(16) }, JumpIf { condition: Relative(4), location: 2492 }, Call { location: 6169 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2513 }, Call { location: 6172 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32845) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32849) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32852) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6175 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2540 }, Call { location: 6217 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32882) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6220 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6333 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2628 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(7), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2654 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2665 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Direct(32844) }, Mov { destination: Relative(17), source: Direct(32887) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2683 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2709 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2720 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2738 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Const { destination: Relative(5), bit_size: Field, value: 15 }, Const { destination: Relative(14), bit_size: Field, value: 33 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Const { destination: Relative(15), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32873) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32873) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32864) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32898) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32899) }, JumpIf { condition: Relative(14), location: 2872 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, Mov { destination: Relative(18), source: Relative(17) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Store { destination_pointer: Relative(18), source: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Trap { revert_data: HeapVector { pointer: Relative(17), size: Relative(15) } }, Const { destination: Relative(10), bit_size: Field, value: 35 }, Const { destination: Relative(14), bit_size: Field, value: 65 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(17) }, JumpIf { condition: Relative(5), location: 2895 }, Call { location: 6172 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32891) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6474 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(5), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5786 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2931 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2942 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32895) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5855 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(1), bit_size: Field, value: 70 }, Const { destination: Relative(4), bit_size: Field, value: 66 }, Const { destination: Relative(10), bit_size: Field, value: 130 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6175 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, JumpIf { condition: Relative(1), location: 2984 }, Call { location: 6217 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Field, value: 42 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Direct(32853) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3034 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, JumpIf { condition: Relative(7), location: 3040 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3047 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, JumpIf { condition: Relative(7), location: 3062 }, Jump { location: 3070 }, JumpIf { condition: Relative(7), location: 3065 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 3069 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Jump { location: 3070 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3087 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(4), location: 3093 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3110 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 3116 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3122 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32843) }, Mov { destination: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3142 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 3149 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3166 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(9), location: 3172 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3178 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32843) }, Mov { destination: Relative(17), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Field, value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32849) }, Mov { destination: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 3219 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 3225 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32846) }, Mov { destination: Relative(19), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 3243 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 3249 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3266 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, JumpIf { condition: Relative(12), location: 3272 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32880) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32893) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32890) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32877) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32892) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32877) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32889) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32896) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32892) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32878) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32862) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(12), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3359 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 2008 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 3377 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(16), location: 3383 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 3390 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(5) }, Mov { destination: Relative(23), source: Relative(4) }, Mov { destination: Relative(24), source: Direct(32838) }, Mov { destination: Relative(25), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(20) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(16), source: Relative(22) }, Mov { destination: Relative(19), source: Relative(23) }, JumpIf { condition: Relative(16), location: 3518 }, Jump { location: 3405 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32886) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32894) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32886) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32897) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32898) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32890) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32858) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32860) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32899) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(4), size: 19 }), HeapArray(HeapArray { pointer: Relative(7), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3544 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3527 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(7), location: 3543 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, Jump { location: 3544 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3553 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3571 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32880) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32897) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32856) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32856) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32894) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32871) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32881) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32893) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32864) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32881) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3655 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3659 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 4192 }, Jump { location: 3662 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3668 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(16) }, Mov { destination: Relative(10), source: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 3686 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3694 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3698 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4144 }, Jump { location: 3701 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32886) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32874) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32881) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32898) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32881) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32899) }, Load { destination: Relative(5), source_pointer: Relative(11) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3761 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3765 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4116 }, Jump { location: 3768 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3777 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6474 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6220 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32869) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6333 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4483 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32843) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32846) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32846) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Direct(32843) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3939 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3947 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 3952 }, Jump { location: 3967 }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3959 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 3963 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3972 }, Jump { location: 3966 }, Jump { location: 3967 }, Load { destination: Relative(1), source_pointer: Relative(4) }, JumpIf { condition: Relative(1), location: 3971 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, JumpIf { condition: Relative(8), location: 3974 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4000 }, Jump { location: 4113 }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4006 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 4020 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Relative(5) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6741 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Load { destination: Relative(16), source_pointer: Relative(5) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 4038 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(16) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 4042 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 4045 }, Jump { location: 4102 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 4053 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(8) }, JumpIf { condition: Relative(17), location: 4053 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 4057 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 4062 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, JumpIf { condition: Relative(15), location: 4068 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(10), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(10) }, JumpIf { condition: Relative(15), location: 4092 }, Jump { location: 4096 }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(17), rhs: Relative(11) }, JumpIf { condition: Relative(10), location: 4099 }, Jump { location: 4095 }, Jump { location: 4096 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(10) }, Jump { location: 4042 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Jump { location: 4102 }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(13) }, JumpIf { condition: Relative(8), location: 4108 }, Jump { location: 4106 }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 4113 }, Jump { location: 4111 }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 3963 }, JumpIf { condition: Relative(5), location: 4118 }, Call { location: 4437 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4128 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4136 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(7), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 3765 }, JumpIf { condition: Relative(9), location: 4146 }, Call { location: 4437 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 4156 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(7) }, Mov { destination: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(18) }, Mov { destination: Relative(15), source: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 4175 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 4183 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(9)), MemoryAddress(Relative(15)), HeapArray(HeapArray { pointer: Relative(19), size: 16 }), HeapArray(HeapArray { pointer: Relative(20), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(9) }, Jump { location: 3698 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4195 }, Jump { location: 4228 }, JumpIf { condition: Relative(9), location: 4197 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 4213 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 4221 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(12)), MemoryAddress(Relative(9)), HeapArray(HeapArray { pointer: Relative(17), size: 16 }), HeapArray(HeapArray { pointer: Relative(18), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 4228 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(9) }, Jump { location: 3659 }, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4240 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 4246 }, Call { location: 4434 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4253 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 4394 }, Jump { location: 4259 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4267 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 4274 }, Call { location: 4431 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4294 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 4366 }, Jump { location: 4297 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4317 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(8) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4331 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(11) }, JumpIf { condition: Relative(8), location: 4341 }, Jump { location: 4334 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 4394 }, JumpIf { condition: Relative(8), location: 4343 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(9) }, Mov { destination: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 4331 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4374 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4294 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 4416 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6833 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 4458 }, Jump { location: 4460 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 4479 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 4477 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 4470 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 4479 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4492 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32888) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32900) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32901) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4501 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 4505 }, Jump { location: 4504 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4510 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(13), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 4534 }, Jump { location: 4618 }, JumpIf { condition: Relative(7), location: 4561 }, Jump { location: 4536 }, BinaryFieldOp { destination: Relative(17), op: LessThan, lhs: Relative(16), rhs: Relative(18) }, JumpIf { condition: Relative(8), location: 4559 }, Jump { location: 4539 }, JumpIf { condition: Relative(10), location: 4557 }, Jump { location: 4541 }, JumpIf { condition: Relative(11), location: 4555 }, Jump { location: 4543 }, JumpIf { condition: Relative(12), location: 4553 }, Jump { location: 4545 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32903) }, JumpIf { condition: Relative(17), location: 4549 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(19) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Relative(18) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(17), rhs: Direct(32863) }, Mov { destination: Relative(13), source: Relative(19) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(16), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(17), bit_size: U1 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(18), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, JumpIf { condition: Relative(13), location: 4618 }, Jump { location: 4570 }, Load { destination: Relative(13), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(19), location: 4575 }, Call { location: 4480 }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, JumpIf { condition: Relative(20), location: 4584 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 4454 }, Mov { destination: Relative(20), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Store { destination_pointer: Relative(22), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(20) }, Call { location: 4454 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 4454 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 4454 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Jump { location: 4618 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 4501 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4652 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4656 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4866 }, Jump { location: 4659 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4667 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4838 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4864 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4868 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4887 }, Jump { location: 4907 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4895 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4907 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4656 }, Call { location: 1533 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 4917 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 4923 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, Load { destination: Relative(1), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32848) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(1), source: Relative(2) }, Return, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4967 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 4970 }, Jump { location: 5202 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4978 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 5201 }, Jump { location: 4983 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4991 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6982 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5008 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 5016 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 5199 }, Jump { location: 5020 }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32888) }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(4), rhs: Direct(32900) }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32901) }, Mov { destination: Relative(7), source: Relative(11) }, Jump { location: 5031 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 5116 }, Jump { location: 5034 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 5039 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, JumpIf { condition: Relative(9), location: 5044 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5070 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 5076 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(10) }, JumpIf { condition: Relative(7), location: 5090 }, Jump { location: 5114 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5096 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(10) }, JumpIf { condition: Relative(9), location: 5102 }, Call { location: 4480 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 5114 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4967 }, Load { destination: Relative(18), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 5120 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(7) }, Load { destination: Relative(19), source_pointer: Relative(21) }, JumpIf { condition: Relative(9), location: 5125 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Load { destination: Relative(20), source_pointer: Relative(22) }, JumpIf { condition: Relative(10), location: 5155 }, Jump { location: 5130 }, BinaryFieldOp { destination: Relative(18), op: LessThan, lhs: Relative(19), rhs: Relative(20) }, JumpIf { condition: Relative(13), location: 5153 }, Jump { location: 5133 }, JumpIf { condition: Relative(14), location: 5151 }, Jump { location: 5135 }, JumpIf { condition: Relative(15), location: 5149 }, Jump { location: 5137 }, JumpIf { condition: Relative(16), location: 5147 }, Jump { location: 5139 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(4), rhs: Direct(32903) }, JumpIf { condition: Relative(18), location: 5143 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(19), rhs: Relative(20) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(18), rhs: Direct(32863) }, Mov { destination: Relative(17), source: Relative(19) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(19), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(18), bit_size: U1 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(20), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(18), bit_size: U1 }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, JumpIf { condition: Relative(17), location: 5164 }, Jump { location: 5196 }, Load { destination: Relative(17), source_pointer: Relative(1) }, Load { destination: Relative(18), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 5169 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(7) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(18) }, Store { destination_pointer: Relative(23), source: Relative(20) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(7) }, Store { destination_pointer: Relative(22), source: Relative(19) }, Store { destination_pointer: Relative(1), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, JumpIf { condition: Relative(19), location: 5194 }, Call { location: 4434 }, Store { destination_pointer: Relative(8), source: Relative(17) }, Jump { location: 5196 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(17) }, Jump { location: 5031 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4967 }, Jump { location: 5202 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5228 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5232 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5446 }, Jump { location: 5235 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5243 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5418 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5444 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5448 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5467 }, Jump { location: 5487 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5475 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 5487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 5232 }, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5515 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5519 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5735 }, Jump { location: 5522 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5530 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5707 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5733 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5737 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5761 }, Jump { location: 5783 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5769 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 5783 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 5519 }, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5793 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 5799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5821 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(1), location: 5826 }, Jump { location: 5824 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, BinaryIntOp { destination: Relative(1), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(1), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(1) }, Jump { location: 5821 }, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5880 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 5883 }, Jump { location: 6136 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5891 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 6135 }, Jump { location: 5896 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5904 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6982 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5921 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 5929 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 6133 }, Jump { location: 5933 }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32895) }, Mov { destination: Relative(7), source: Relative(11) }, Jump { location: 5941 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, JumpIf { condition: Relative(14), location: 6049 }, Jump { location: 5944 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 5949 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 5959 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, Store { destination_pointer: Relative(21), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, Store { destination_pointer: Relative(9), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, Store { destination_pointer: Relative(10), source: Relative(16) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6003 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 6009 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(13) }, JumpIf { condition: Relative(7), location: 6023 }, Jump { location: 6047 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6029 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(9), location: 6035 }, Call { location: 4480 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 6047 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5880 }, Load { destination: Relative(15), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 6053 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, JumpIf { condition: Relative(9), location: 6059 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(10) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryFieldOp { destination: Relative(15), op: LessThan, lhs: Relative(17), rhs: Relative(18) }, JumpIf { condition: Relative(13), location: 6071 }, Jump { location: 6065 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32902) }, JumpIf { condition: Relative(17), location: 6069 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6073 }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6073 }, JumpIf { condition: Relative(14), location: 6075 }, Jump { location: 6130 }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, JumpIf { condition: Relative(17), location: 6080 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Store { destination_pointer: Relative(1), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 6128 }, Call { location: 4434 }, Store { destination_pointer: Relative(8), source: Relative(14) }, Jump { location: 6130 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(14) }, Jump { location: 5941 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5880 }, Jump { location: 6136 }, Return, Call { location: 1533 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6147 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6151 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6156 }, Jump { location: 6154 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6151 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6185 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6189 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6194 }, Jump { location: 6192 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6189 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6230 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32867) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32882) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6276 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 6286 }, Jump { location: 6279 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 6288 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Load { destination: Relative(10), source_pointer: Relative(19) }, JumpIf { condition: Relative(12), location: 6317 }, Jump { location: 6300 }, JumpIf { condition: Relative(13), location: 6314 }, Jump { location: 6302 }, JumpIf { condition: Relative(14), location: 6311 }, Jump { location: 6304 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32884) }, JumpIf { condition: Relative(17), location: 6308 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32904) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(15) }, Mov { destination: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 6276 }, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6342 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32867) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32882) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6349 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 6353 }, Jump { location: 6352 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 6358 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 6394 }, Jump { location: 6471 }, JumpIf { condition: Relative(7), location: 6413 }, Jump { location: 6396 }, JumpIf { condition: Relative(8), location: 6410 }, Jump { location: 6398 }, JumpIf { condition: Relative(10), location: 6407 }, Jump { location: 6400 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32884) }, JumpIf { condition: Relative(17), location: 6404 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32904) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 4440 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(16) }, JumpIf { condition: Relative(19), location: 6437 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 4454 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 4454 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 4454 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 4454 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(18) }, Jump { location: 6471 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 6349 }, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6484 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32866) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6528 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 6538 }, Jump { location: 6531 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 6540 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(18) }, JumpIf { condition: Relative(12), location: 6561 }, Jump { location: 6552 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, JumpIf { condition: Relative(16), location: 6556 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(16), op: Mul, lhs: Relative(15), rhs: Direct(32845) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6566 }, BinaryFieldOp { destination: Relative(16), op: Add, lhs: Relative(15), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6566 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(13) }, Mov { destination: Relative(20), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 6528 }, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7041 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6597 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6741 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6615 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 6619 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 6622 }, Jump { location: 6740 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6630 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 6640 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 6640 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6644 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6649 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 6655 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 6682 }, Jump { location: 6677 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6680 }, Jump { location: 6694 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Jump { location: 6694 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 6688 }, Call { location: 4434 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 6694 }, Load { destination: Relative(12), source_pointer: Relative(9) }, JumpIf { condition: Relative(12), location: 6700 }, Jump { location: 6697 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 6619 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 6706 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 4454 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 4454 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Jump { location: 6740 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6762 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6833 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 6788 }, Jump { location: 6805 }, JumpIf { condition: Direct(32781), location: 6790 }, Jump { location: 6794 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 6804 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 6804 }, Jump { location: 6817 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 6817 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 6831 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 6831 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 6824 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6840 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(6) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6887 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6891 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 6918 }, Jump { location: 6894 }, Load { destination: Relative(1), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U1, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 6899 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(3) } }, Const { destination: Relative(1), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 7488 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Store { destination_pointer: Relative(8), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 6920 }, Call { location: 4437 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U1, lhs: Relative(10), rhs: Direct(32837) }, JumpIf { condition: Relative(11), location: 6930 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 6956 }, Jump { location: 6933 }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 6940 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 6951 }, Call { location: 4434 }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(8), source: Relative(12) }, Jump { location: 6979 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7488 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Store { destination_pointer: Relative(13), source: Relative(5) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Store { destination_pointer: Relative(8), source: Relative(11) }, Jump { location: 6979 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6891 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 6991 }, Jump { location: 6995 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 7017 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 7016 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 7009 }, Jump { location: 7017 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 7023 }, Jump { location: 7025 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 7040 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 7037 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 7030 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 7040 }, Return, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 7056 }, Call { location: 4434 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7063 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 7487 }, Jump { location: 7069 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7077 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 7084 }, Call { location: 4431 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7104 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 7459 }, Jump { location: 7107 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7127 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7153 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7157 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 7408 }, Jump { location: 7160 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7168 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32894) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32871) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32874) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32874) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32871) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32894) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32898) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32899) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32877) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32898) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32889) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32899) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 7345 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 7371 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32844) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7373 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 7383 }, Jump { location: 7376 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 7487 }, JumpIf { condition: Relative(10), location: 7385 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 7373 }, JumpIf { condition: Relative(11), location: 7410 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 7434 }, Jump { location: 7456 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 7442 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 7456 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 7157 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 7467 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7104 }, Return, Call { location: 1533 }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7491 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 7519 }, Jump { location: 7494 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7501 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32847) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 7523 }, Jump { location: 7546 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 7019 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7546 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 7491 }]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -248,7 +248,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { @@ -260,7 +260,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index 086133fd095..8e35fba2acd 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -229,7 +229,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32882 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32870), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32870 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 70 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32882 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32845), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32846), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32847), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32848), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32849), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32850), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32851), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32852), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32853), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32854), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32855), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32858), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32863), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32866), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32869), bit_size: Field, value: 18446744073709551616 }, Return, Call { location: 11350 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 110 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(11), location: 135 }, Call { location: 11610 }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 142 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 156 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32869) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(23), source: Relative(22) }, Store { destination_pointer: Relative(23), source: Relative(3) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Direct(32840) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Direct(32840) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Store { destination_pointer: Relative(19), source: Direct(32842) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 196 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 11320 }, Jump { location: 199 }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(18) }, Load { destination: Relative(13), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 208 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(21), size: Relative(22) }, output: HeapArray { pointer: Relative(23), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(17), source: Relative(10) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(13) }, Store { destination_pointer: Relative(20), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Load { destination: Relative(10), source_pointer: Relative(12) }, Cast { destination: Relative(13), source: Relative(10), bit_size: Integer(U32) }, Cast { destination: Relative(12), source: Relative(13), bit_size: Field }, Cast { destination: Relative(10), source: Relative(12), bit_size: Integer(U32) }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 233 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 237 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 240 }, Jump { location: 305 }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 246 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(15), location: 256 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(2) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(2) }, JumpIf { condition: Relative(17), location: 256 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 260 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 265 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(15), location: 271 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(12), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 295 }, Jump { location: 299 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(17), rhs: Relative(3) }, JumpIf { condition: Relative(12), location: 302 }, Jump { location: 298 }, Jump { location: 299 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 237 }, Store { destination_pointer: Relative(11), source: Direct(32841) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Jump { location: 305 }, Load { destination: Relative(5), source_pointer: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(14) }, JumpIf { condition: Relative(5), location: 309 }, Call { location: 11622 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 73 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 107 }, Const { destination: Relative(11), bit_size: Integer(U8), value: 121 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 437 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(15) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(17) }, Mov { destination: Direct(32772), source: Relative(16) }, Mov { destination: Direct(32773), source: Relative(18) }, Call { location: 23 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(17) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(15), size: Relative(14) } }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 444 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(9) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32869) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Relative(3) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, Store { destination_pointer: Relative(9), source: Relative(17) }, Store { destination_pointer: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(15), source: Direct(32842) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 484 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 11290 }, Jump { location: 487 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(18), source_pointer: Relative(13) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 496 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(20), size: Relative(21) }, output: HeapArray { pointer: Relative(22), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(9), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(16), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Cast { destination: Relative(13), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(13), bit_size: Field }, Cast { destination: Relative(4), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(14), source_pointer: Relative(13) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(14) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 527 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 530 }, Jump { location: 638 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 538 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(2) }, JumpIf { condition: Relative(17), location: 548 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 548 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(18), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(17) }, JumpIf { condition: Relative(18), location: 552 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(17), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(15) }, BinaryIntOp { destination: Relative(18), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(17) }, JumpIf { condition: Relative(18), location: 557 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(17), rhs: Relative(13) }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(18), rhs: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, JumpIf { condition: Relative(17), location: 563 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(13) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, Not { destination: Relative(14), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(17) }, JumpIf { condition: Relative(20), location: 587 }, Jump { location: 591 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(19), rhs: Relative(3) }, JumpIf { condition: Relative(14), location: 594 }, Jump { location: 590 }, Jump { location: 591 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 527 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 600 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(17) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(13), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Store { destination_pointer: Relative(16), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 634 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(8), source: Relative(4) }, Jump { location: 638 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 646 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32838) }, JumpIf { condition: Relative(8), location: 651 }, Call { location: 11654 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 661 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(3) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Direct(32842) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 701 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 11260 }, Jump { location: 704 }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(9) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 713 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(20), size: Relative(21) }, output: HeapArray { pointer: Relative(22), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(18) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(17), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Cast { destination: Relative(13), source: Relative(8), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(13), bit_size: Field }, Cast { destination: Relative(8), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 738 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 742 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 745 }, Jump { location: 804 }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 751 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 761 }, BinaryIntOp { destination: Relative(17), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 761 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 765 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 770 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(14), rhs: Relative(7) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, JumpIf { condition: Relative(14), location: 776 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Not { destination: Relative(15), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 795 }, Jump { location: 799 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(16), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 802 }, Jump { location: 798 }, Jump { location: 799 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(9) }, Jump { location: 742 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 804 }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 808 }, Call { location: 11657 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(13) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 847 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(14) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 851 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 11247 }, Jump { location: 854 }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 862 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Const { destination: Relative(13), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(16), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(17), bit_size: Integer(U8), value: 112 }, Const { destination: Relative(18), bit_size: Integer(U8), value: 49 }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(15) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32850) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32863) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32856) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32850) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(17) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32855) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32856) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32859) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32865) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32863) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32851) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(18) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32846) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32855) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32861) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32867) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32868) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32847) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 970 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, Mov { destination: Relative(20), source: Relative(16) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(21) }, Mov { destination: Direct(32772), source: Relative(20) }, Mov { destination: Direct(32773), source: Relative(22) }, Call { location: 23 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(20), source: Direct(32842) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(9) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Load { destination: Relative(9), source_pointer: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 983 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32869) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Relative(25), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(4) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32840) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32840) }, Store { destination_pointer: Relative(19), source: Relative(23) }, Store { destination_pointer: Relative(20), source: Relative(15) }, Store { destination_pointer: Relative(21), source: Direct(32842) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1023 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 11217 }, Jump { location: 1026 }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(15) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 1035 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(25), size: Relative(26) }, output: HeapArray { pointer: Relative(27), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(19), source: Relative(14) }, Store { destination_pointer: Relative(20), source: Relative(23) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(14), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(14), source: Relative(15), bit_size: Integer(U32) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1060 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1064 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(15), location: 1067 }, Jump { location: 1132 }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1073 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 1083 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, JumpIf { condition: Relative(21), location: 1083 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1087 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1092 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(19), rhs: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, JumpIf { condition: Relative(19), location: 1098 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(24) }, Not { destination: Relative(20), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 1122 }, Jump { location: 1126 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(21), rhs: Relative(4) }, JumpIf { condition: Relative(15), location: 1129 }, Jump { location: 1125 }, Jump { location: 1126 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 1064 }, Store { destination_pointer: Relative(8), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(22) }, Jump { location: 1132 }, Load { destination: Relative(4), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(13) }, JumpIf { condition: Relative(4), location: 1136 }, Call { location: 11622 }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(4), location: 1160 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(9) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(13) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, Store { destination_pointer: Relative(13), source: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(12) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32842) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, Load { destination: Relative(15), source_pointer: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1203 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(12) }, Mov { destination: Relative(21), source: Relative(13) }, Mov { destination: Relative(22), source: Relative(14) }, Mov { destination: Relative(23), source: Relative(6) }, Mov { destination: Relative(24), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(12) }, Mov { destination: Relative(21), source: Relative(13) }, Mov { destination: Relative(22), source: Relative(14) }, Mov { destination: Relative(23), source: Relative(6) }, Mov { destination: Relative(24), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 1233 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 1238 }, Call { location: 11660 }, Load { destination: Relative(8), source_pointer: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 1251 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32869) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Relative(6) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(15) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(23), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1291 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 11187 }, Jump { location: 1294 }, Load { destination: Relative(14), source_pointer: Relative(20) }, Load { destination: Relative(15), source_pointer: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(19), source_pointer: Relative(15) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(19) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 1303 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(19) }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(25), size: Relative(26) }, output: HeapArray { pointer: Relative(27), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(14) }, Store { destination_pointer: Relative(21), source: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(23), source: Direct(32841) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(14), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(14), source: Relative(15), bit_size: Integer(U32) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1328 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1332 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 1335 }, Jump { location: 1400 }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1341 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 1351 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, JumpIf { condition: Relative(21), location: 1351 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1355 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1360 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(19), rhs: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, JumpIf { condition: Relative(19), location: 1366 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(24) }, Not { destination: Relative(20), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 1390 }, Jump { location: 1394 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(21), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 1397 }, Jump { location: 1393 }, Jump { location: 1394 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 1332 }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(22) }, Jump { location: 1400 }, Load { destination: Relative(6), source_pointer: Relative(12) }, Load { destination: Relative(7), source_pointer: Relative(13) }, JumpIf { condition: Relative(6), location: 1404 }, Call { location: 11622 }, Const { destination: Relative(6), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(8), bit_size: Integer(U8), value: 120 }, Const { destination: Relative(12), bit_size: Integer(U8), value: 99 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 119 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Relative(6) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32852) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32860) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32849) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32846) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32851) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32847) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 1509 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1515 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(14) }, Mov { destination: Relative(14), source: Relative(9) }, Store { destination_pointer: Relative(14), source: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32837) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32838) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1552 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(7) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1560 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32863) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32853) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32862) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32864) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32857) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32855) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32845) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32853) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32864) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32862) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(11) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32868) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 34 }, Const { destination: Relative(19), bit_size: Integer(U8), value: 58 }, Const { destination: Relative(20), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(21), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32863) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32862) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32865) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32850) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32859) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32862) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(11) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32863) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(11) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32866) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32850) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32865) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1802 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 11147 }, Jump { location: 1805 }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 1813 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 51 }, Const { destination: Relative(17), bit_size: Integer(U8), value: 50 }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Direct(32867) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(19) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32865) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32863) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32855) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32855) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32846) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(13) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32856) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(19) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(8), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 1904 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 1909 }, Call { location: 11663 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1915 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(8) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32869) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 78 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32861) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32854) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32861) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32865) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32863) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32867) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32849) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32868) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32847) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 2008 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 10963 }, Jump { location: 2011 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(16) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(7) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Store { destination_pointer: Relative(14), source: Relative(6) }, Store { destination_pointer: Relative(15), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(7) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2098 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 2102 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(16), location: 10932 }, Jump { location: 2105 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2114 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(22), source_pointer: Relative(15) }, Load { destination: Relative(23), source_pointer: Relative(13) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 2125 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Load { destination: Relative(26), source_pointer: Relative(2) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 2136 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(26) }, Load { destination: Relative(26), source_pointer: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 2144 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(23) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(23) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32869) }, JumpIf { condition: Relative(26), location: 2162 }, Jump { location: 2185 }, Store { destination_pointer: Relative(24), source: Direct(32841) }, Load { destination: Relative(23), source_pointer: Relative(2) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 2169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(23) }, Load { destination: Relative(23), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2177 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(23) }, Mov { destination: Relative(21), source: Direct(32838) }, Jump { location: 2181 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(23), location: 10728 }, Jump { location: 2184 }, Jump { location: 2185 }, Load { destination: Relative(2), source_pointer: Relative(24) }, JumpIf { condition: Relative(2), location: 2188 }, Call { location: 11666 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2195 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Relative(3) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Store { destination_pointer: Relative(2), source: Relative(24) }, Store { destination_pointer: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(23), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2222 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 10698 }, Jump { location: 2225 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2234 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(2), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(23), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(17), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(17), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 2261 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2265 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(17), location: 2268 }, Jump { location: 2376 }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(21), source_pointer: Relative(15) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 2276 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 2286 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, JumpIf { condition: Relative(26), location: 2286 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 2290 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(22) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 2295 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, JumpIf { condition: Relative(24), location: 2301 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, Not { destination: Relative(21), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(24) }, JumpIf { condition: Relative(27), location: 2325 }, Jump { location: 2329 }, BinaryFieldOp { destination: Relative(21), op: Equals, lhs: Relative(26), rhs: Relative(3) }, JumpIf { condition: Relative(21), location: 2332 }, Jump { location: 2328 }, Jump { location: 2329 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(17) }, Jump { location: 2265 }, Load { destination: Relative(1), source_pointer: Relative(14) }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(3), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 2338 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(2), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(25) }, Store { destination_pointer: Relative(21), source: Relative(26) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(17), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Store { destination_pointer: Relative(22), source: Relative(28) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(3) }, JumpIf { condition: Relative(17), location: 2372 }, Call { location: 11651 }, Store { destination_pointer: Relative(14), source: Relative(1) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Store { destination_pointer: Relative(13), source: Relative(2) }, Jump { location: 2376 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2391 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2399 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(9) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(9) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32869) }, JumpIf { condition: Relative(14), location: 2417 }, Jump { location: 2440 }, Store { destination_pointer: Relative(13), source: Direct(32841) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2424 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(3) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2432 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(14) }, Mov { destination: Relative(9), source: Direct(32838) }, Jump { location: 2436 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, JumpIf { condition: Relative(14), location: 10494 }, Jump { location: 2439 }, Jump { location: 2440 }, Load { destination: Relative(2), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 2444 }, Call { location: 11669 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(2) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 2479 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, Const { destination: Relative(2), bit_size: Field, value: 5 }, Const { destination: Relative(13), bit_size: Field, value: 11 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(2) }, Mov { destination: Relative(26), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(15), bit_size: Field, value: 2 }, Const { destination: Relative(16), bit_size: Field, value: 13 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(15) }, Mov { destination: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 2523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Const { destination: Relative(21), bit_size: Field, value: 55 }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2528 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(14), location: 10414 }, Jump { location: 2531 }, Load { destination: Relative(14), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2539 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, JumpIf { condition: Relative(9), location: 2544 }, Call { location: 11672 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2554 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Relative(15) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, Store { destination_pointer: Relative(9), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(3) }, Store { destination_pointer: Relative(23), source: Direct(32842) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2581 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 10384 }, Jump { location: 2584 }, Load { destination: Relative(3), source_pointer: Relative(9) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(17) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2593 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(9), source: Relative(3) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(9) }, Cast { destination: Relative(17), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(17), bit_size: Field }, Cast { destination: Relative(3), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2618 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2622 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 2625 }, Jump { location: 2684 }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2631 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, JumpIf { condition: Relative(21), location: 2641 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(23), location: 2641 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(9) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 2645 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(9) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 2650 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(21), rhs: Relative(7) }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(21), rhs: Relative(23) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, JumpIf { condition: Relative(21), location: 2656 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Load { destination: Relative(9), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(25) }, Not { destination: Relative(22), source: Relative(21), bit_size: U1 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(9) }, JumpIf { condition: Relative(21), location: 2675 }, Jump { location: 2679 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(23), rhs: Relative(15) }, JumpIf { condition: Relative(9), location: 2682 }, Jump { location: 2678 }, Jump { location: 2679 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(9) }, Jump { location: 2622 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 2684 }, Load { destination: Relative(3), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 2688 }, Call { location: 11675 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(9), bit_size: Field, value: 3 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(15) }, Mov { destination: Relative(26), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(14), bit_size: Field, value: 7 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(2) }, Mov { destination: Relative(26), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 2758 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(27) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(25) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(25) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(23) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 2784 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2788 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(23), location: 10340 }, Jump { location: 2791 }, Load { destination: Relative(17), source_pointer: Relative(25) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 2799 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Direct(32848) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32854) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32857) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32852) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32856) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32852) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32856) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32851) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32854) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32849) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32857) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32846) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32851) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32855) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(10) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(11) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32849) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32847) }, Load { destination: Relative(25), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2970 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(22) }, JumpIf { condition: Relative(25), location: 2996 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(28) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(30) }, Mov { destination: Direct(32772), source: Relative(29) }, Mov { destination: Direct(32773), source: Relative(31) }, Call { location: 23 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(28), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3002 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 3008 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Load { destination: Relative(22), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(28) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Load { destination: Relative(17), source_pointer: Relative(21) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3031 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(21) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3042 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(27) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(30) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(27) }, Store { destination_pointer: Relative(29), source: Direct(32838) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3068 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(21), location: 3071 }, Jump { location: 3265 }, Load { destination: Relative(21), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3079 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Direct(32838) }, JumpIf { condition: Relative(22), location: 3264 }, Jump { location: 3084 }, Load { destination: Relative(21), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3092 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(28), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 3109 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(29), source: Relative(26) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, JumpIf { condition: Relative(24), location: 3117 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(24), location: 3262 }, Jump { location: 3121 }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(22), source: Relative(28) }, Jump { location: 3127 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, JumpIf { condition: Relative(26), location: 3212 }, Jump { location: 3130 }, Load { destination: Relative(22), source_pointer: Relative(17) }, Load { destination: Relative(26), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 3135 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(32) }, JumpIf { condition: Relative(25), location: 3140 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(25), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(26) }, Store { destination_pointer: Relative(33), source: Relative(25) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(27) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Load { destination: Relative(25), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(25) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 3166 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, JumpIf { condition: Relative(32), location: 3172 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(25) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Store { destination_pointer: Relative(29), source: Relative(33) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(26) }, JumpIf { condition: Relative(22), location: 3186 }, Jump { location: 3210 }, Load { destination: Relative(22), source_pointer: Relative(33) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 3192 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(26) }, JumpIf { condition: Relative(25), location: 3198 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(28) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(25) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Jump { location: 3210 }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 3068 }, Load { destination: Relative(26), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 3216 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(22) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(25), location: 3221 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(26), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(26), location: 3227 }, Jump { location: 3259 }, Load { destination: Relative(26), source_pointer: Relative(17) }, Load { destination: Relative(31), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 3232 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(22) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(22) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(17), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, JumpIf { condition: Relative(32), location: 3257 }, Call { location: 11616 }, Store { destination_pointer: Relative(24), source: Relative(26) }, Jump { location: 3259 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Mov { destination: Relative(22), source: Relative(26) }, Jump { location: 3127 }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 3068 }, Jump { location: 3265 }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(3) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3275 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(28) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(25) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(25) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 3301 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3305 }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(25), location: 10296 }, Jump { location: 3308 }, Load { destination: Relative(17), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3316 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Direct(32848) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32852) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32856) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32852) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32856) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32851) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32849) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32846) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32851) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32855) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32849) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32847) }, Load { destination: Relative(27), source_pointer: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3491 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(24) }, JumpIf { condition: Relative(27), location: 3517 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, Mov { destination: Relative(31), source: Relative(30) }, IndirectConst { destination_pointer: Relative(31), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(32) }, Mov { destination: Direct(32772), source: Relative(31) }, Mov { destination: Direct(32773), source: Relative(33) }, Call { location: 23 }, Const { destination: Relative(32), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(32) }, Store { destination_pointer: Relative(31), source: Direct(32843) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(24) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(17) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(30), size: Relative(29) } }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 3529 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(29) } }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Load { destination: Relative(17), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32844) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(4) }, Load { destination: Relative(29), source_pointer: Relative(30) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(17) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(24) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3552 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Load { destination: Relative(29), source_pointer: Relative(22) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 3563 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(29) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(32) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, Mov { destination: Relative(31), source: Relative(29) }, Store { destination_pointer: Relative(31), source: Direct(32838) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32843) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32842) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3589 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(22), location: 3592 }, Jump { location: 3786 }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(31) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3600 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Direct(32838) }, JumpIf { condition: Relative(24), location: 3785 }, Jump { location: 3605 }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(31) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3613 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Load { destination: Relative(32), source_pointer: Relative(33) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 3630 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Store { destination_pointer: Relative(31), source: Relative(28) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(22) }, JumpIf { condition: Relative(26), location: 3638 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(26), location: 3783 }, Jump { location: 3642 }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(30) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Direct(32836) }, Mov { destination: Relative(24), source: Relative(30) }, Jump { location: 3648 }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(32) }, JumpIf { condition: Relative(28), location: 3733 }, Jump { location: 3651 }, Load { destination: Relative(24), source_pointer: Relative(17) }, Load { destination: Relative(28), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(28), rhs: Direct(32836) }, JumpIf { condition: Relative(26), location: 3656 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(28) }, Load { destination: Relative(26), source_pointer: Relative(34) }, JumpIf { condition: Relative(27), location: 3661 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(32) }, Load { destination: Relative(27), source_pointer: Relative(34) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(33), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(28) }, Store { destination_pointer: Relative(35), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(32) }, Store { destination_pointer: Relative(34), source: Relative(26) }, Store { destination_pointer: Relative(17), source: Relative(24) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(27), source_pointer: Relative(26) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(33), rhs: Relative(27) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 3687 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, JumpIf { condition: Relative(34), location: 3693 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(35), source: Direct(32773) }, Mov { destination: Relative(36), source: Direct(32774) }, Store { destination_pointer: Relative(36), source: Relative(27) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Relative(32) }, Store { destination_pointer: Relative(29), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(35) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(28) }, JumpIf { condition: Relative(24), location: 3707 }, Jump { location: 3731 }, Load { destination: Relative(24), source_pointer: Relative(35) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3713 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(27), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(28) }, JumpIf { condition: Relative(27), location: 3719 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(30) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Jump { location: 3731 }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 3589 }, Load { destination: Relative(28), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(33), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, JumpIf { condition: Relative(33), location: 3737 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(24) }, Load { destination: Relative(33), source_pointer: Relative(35) }, JumpIf { condition: Relative(27), location: 3742 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryFieldOp { destination: Relative(28), op: LessThan, lhs: Relative(33), rhs: Relative(34) }, JumpIf { condition: Relative(28), location: 3748 }, Jump { location: 3780 }, Load { destination: Relative(28), source_pointer: Relative(17) }, Load { destination: Relative(33), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(34), op: LessThan, bit_size: U32, lhs: Relative(33), rhs: Direct(32836) }, JumpIf { condition: Relative(34), location: 3753 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(33) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(24) }, Load { destination: Relative(35), source_pointer: Relative(37) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(36), source: Direct(32773) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(33) }, Store { destination_pointer: Relative(38), source: Relative(35) }, Mov { destination: Direct(32771), source: Relative(36) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(28), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(24) }, Store { destination_pointer: Relative(37), source: Relative(34) }, Store { destination_pointer: Relative(17), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(33), rhs: Relative(28) }, JumpIf { condition: Relative(34), location: 3778 }, Call { location: 11616 }, Store { destination_pointer: Relative(26), source: Relative(28) }, Jump { location: 3780 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Relative(24), source: Relative(28) }, Jump { location: 3648 }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 3589 }, Jump { location: 3786 }, Load { destination: Relative(22), source_pointer: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(26) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(3) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3814 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3818 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(3), location: 10245 }, Jump { location: 3821 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(6), source_pointer: Relative(26) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3829 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Direct(32848) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32854) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32866) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32850) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32852) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32856) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32852) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32856) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32850) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32866) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32867) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32854) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32849) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32868) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32846) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32855) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32867) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32862) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32849) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32868) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32847) }, Load { destination: Relative(26), source_pointer: Relative(6) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4006 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(26), location: 4032 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, Mov { destination: Relative(30), source: Relative(29) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(31) }, Mov { destination: Direct(32772), source: Relative(30) }, Mov { destination: Direct(32773), source: Relative(32) }, Call { location: 23 }, Const { destination: Relative(31), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(31) }, Store { destination_pointer: Relative(30), source: Direct(32843) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(3) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(29), size: Relative(28) } }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4038 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 4044 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(28) } }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(7) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4066 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 10216 }, Jump { location: 4069 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4076 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(3) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4087 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(24) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(28) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(24) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32843) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32842) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 4116 }, Jump { location: 4358 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(7), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4124 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 4357 }, Jump { location: 4129 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(7), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4137 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Load { destination: Relative(31), source_pointer: Relative(32) }, Load { destination: Relative(3), source_pointer: Relative(29) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 4154 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(3) }, Store { destination_pointer: Relative(24), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Relative(29) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, JumpIf { condition: Relative(26), location: 4162 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(26), location: 4355 }, Jump { location: 4166 }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(30) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, Mov { destination: Relative(7), source: Relative(30) }, Jump { location: 4173 }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 4281 }, Jump { location: 4176 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(32), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Direct(32836) }, JumpIf { condition: Relative(26), location: 4181 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(32), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(26) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(34) }, Load { destination: Relative(35), source_pointer: Relative(37) }, JumpIf { condition: Relative(28), location: 4191 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(29) }, Load { destination: Relative(28), source_pointer: Relative(37) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(36) }, Load { destination: Relative(37), source_pointer: Relative(39) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(26) }, Store { destination_pointer: Relative(40), source: Relative(28) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(34) }, Store { destination_pointer: Relative(28), source: Relative(37) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(34), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(36) }, Store { destination_pointer: Relative(29), source: Relative(35) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(26) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 4235 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(32), rhs: Relative(28) }, JumpIf { condition: Relative(33), location: 4241 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(34), source: Direct(32773) }, Mov { destination: Relative(35), source: Direct(32774) }, Store { destination_pointer: Relative(35), source: Relative(28) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(31) }, Store { destination_pointer: Relative(24), source: Relative(33) }, Store { destination_pointer: Relative(27), source: Relative(34) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(32) }, JumpIf { condition: Relative(7), location: 4255 }, Jump { location: 4279 }, Load { destination: Relative(7), source_pointer: Relative(34) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4261 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(32), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(32) }, JumpIf { condition: Relative(28), location: 4267 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Store { destination_pointer: Relative(31), source: Relative(30) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(7) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Jump { location: 4279 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4113 }, Load { destination: Relative(32), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(33), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(33), location: 4285 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(33) }, Load { destination: Relative(34), source_pointer: Relative(36) }, JumpIf { condition: Relative(28), location: 4291 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(29) }, Load { destination: Relative(35), source_pointer: Relative(37) }, BinaryFieldOp { destination: Relative(32), op: LessThan, lhs: Relative(34), rhs: Relative(35) }, JumpIf { condition: Relative(32), location: 4297 }, Jump { location: 4352 }, Load { destination: Relative(32), source_pointer: Relative(6) }, Load { destination: Relative(34), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(34), rhs: Direct(32836) }, JumpIf { condition: Relative(35), location: 4302 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(34), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(35) }, Load { destination: Relative(36), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(37) }, Load { destination: Relative(38), source_pointer: Relative(40) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(33) }, Load { destination: Relative(39), source_pointer: Relative(41) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(40) }, Load { destination: Relative(41), source_pointer: Relative(43) }, Mov { destination: Direct(32771), source: Relative(32) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(35) }, Store { destination_pointer: Relative(44), source: Relative(39) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(32), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(37) }, Store { destination_pointer: Relative(39), source: Relative(41) }, Mov { destination: Direct(32771), source: Relative(32) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(33) }, Store { destination_pointer: Relative(39), source: Relative(36) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(32), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(40) }, Store { destination_pointer: Relative(36), source: Relative(38) }, Store { destination_pointer: Relative(6), source: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, JumpIf { condition: Relative(33), location: 4350 }, Call { location: 11616 }, Store { destination_pointer: Relative(26), source: Relative(32) }, Jump { location: 4352 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(32) }, Jump { location: 4173 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4113 }, Jump { location: 4358 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(7) }, Store { destination_pointer: Relative(24), source: Relative(15) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(13) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4379 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4383 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 10203 }, Jump { location: 4386 }, Load { destination: Relative(6), source_pointer: Relative(7) }, JumpIf { condition: Relative(6), location: 4389 }, Call { location: 11793 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(7) }, Store { destination_pointer: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(14) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4409 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4413 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 10190 }, Jump { location: 4416 }, Load { destination: Relative(6), source_pointer: Relative(7) }, JumpIf { condition: Relative(6), location: 4419 }, Call { location: 11796 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(7) }, Store { destination_pointer: Relative(21), source: Relative(15) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(14) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4445 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4449 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 10167 }, Jump { location: 4452 }, Load { destination: Relative(3), source_pointer: Relative(7) }, JumpIf { condition: Relative(3), location: 4455 }, Call { location: 11799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(15) }, Mov { destination: Relative(31), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(2) }, Mov { destination: Relative(31), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(13) }, Mov { destination: Relative(31), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(28) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4549 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4553 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(22), location: 10116 }, Jump { location: 4556 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4564 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 4590 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(27) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(29) }, Mov { destination: Direct(32772), source: Relative(28) }, Mov { destination: Direct(32773), source: Relative(30) }, Call { location: 23 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(27), size: Relative(26) } }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32838) }, Load { destination: Relative(27), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4625 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4629 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 10090 }, Jump { location: 4632 }, Load { destination: Relative(13), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Store { destination_pointer: Relative(3), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4644 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4648 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 10017 }, Jump { location: 4651 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4660 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(28) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4686 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4690 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(22), location: 9973 }, Jump { location: 4693 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4701 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 4727 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(27) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(29) }, Mov { destination: Direct(32772), source: Relative(28) }, Mov { destination: Direct(32773), source: Relative(30) }, Call { location: 23 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(27), size: Relative(26) } }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4733 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 4739 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, Load { destination: Relative(13), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32844) }, Load { destination: Relative(21), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4762 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4773 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(29) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Direct(32838) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4799 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(16), location: 4802 }, Jump { location: 4996 }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4810 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 4995 }, Jump { location: 4815 }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4823 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 4840 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 4848 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(22), location: 4993 }, Jump { location: 4852 }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(21), source: Relative(29) }, Jump { location: 4858 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 4943 }, Jump { location: 4861 }, Load { destination: Relative(21), source_pointer: Relative(13) }, Load { destination: Relative(27), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 4866 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(32) }, JumpIf { condition: Relative(24), location: 4871 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(24), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(27) }, Store { destination_pointer: Relative(33), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(22) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(24) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 4897 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, JumpIf { condition: Relative(32), location: 4903 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(24) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(32) }, Store { destination_pointer: Relative(28), source: Relative(33) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 4917 }, Jump { location: 4941 }, Load { destination: Relative(21), source_pointer: Relative(33) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4923 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(24), location: 4929 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Jump { location: 4941 }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4799 }, Load { destination: Relative(27), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 4947 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(21) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(24), location: 4952 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(27), location: 4958 }, Jump { location: 4990 }, Load { destination: Relative(27), source_pointer: Relative(13) }, Load { destination: Relative(31), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 4963 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(21) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(13), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, JumpIf { condition: Relative(32), location: 4988 }, Call { location: 11616 }, Store { destination_pointer: Relative(22), source: Relative(27) }, Jump { location: 4990 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(27) }, Jump { location: 4858 }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4799 }, Jump { location: 4996 }, Load { destination: Relative(16), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5006 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(28) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(24) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(24) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 5032 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5036 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 9929 }, Jump { location: 5039 }, Load { destination: Relative(13), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5047 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(22) }, JumpIf { condition: Relative(24), location: 5073 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(28) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(30) }, Mov { destination: Direct(32772), source: Relative(29) }, Mov { destination: Direct(32773), source: Relative(31) }, Call { location: 23 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(13) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(28), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5079 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 5085 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Load { destination: Relative(13), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Load { destination: Relative(22), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(28) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Load { destination: Relative(13), source_pointer: Relative(4) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5108 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(4) }, Load { destination: Relative(22), source_pointer: Relative(4) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5119 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(22) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Direct(32838) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(4) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5145 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 5148 }, Jump { location: 5342 }, Load { destination: Relative(4), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5156 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 5341 }, Jump { location: 5161 }, Load { destination: Relative(4), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(4), source_pointer: Relative(27) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 5186 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(4) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(24), location: 5194 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(24), location: 5339 }, Jump { location: 5198 }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(21), source: Relative(29) }, Jump { location: 5204 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 5289 }, Jump { location: 5207 }, Load { destination: Relative(21), source_pointer: Relative(13) }, Load { destination: Relative(27), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 5212 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, Load { destination: Relative(24), source_pointer: Relative(32) }, JumpIf { condition: Relative(26), location: 5217 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(27) }, Store { destination_pointer: Relative(33), source: Relative(26) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(28) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 5243 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, JumpIf { condition: Relative(32), location: 5249 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(26) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(22), source: Relative(32) }, Store { destination_pointer: Relative(28), source: Relative(33) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 5263 }, Jump { location: 5287 }, Load { destination: Relative(21), source_pointer: Relative(33) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 5269 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(26), location: 5275 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Jump { location: 5287 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 5145 }, Load { destination: Relative(27), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 5293 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(21) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(26), location: 5298 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(27), location: 5304 }, Jump { location: 5336 }, Load { destination: Relative(27), source_pointer: Relative(13) }, Load { destination: Relative(31), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 5309 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(21) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(13), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, JumpIf { condition: Relative(32), location: 5334 }, Call { location: 11616 }, Store { destination_pointer: Relative(24), source: Relative(27) }, Jump { location: 5336 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(27) }, Jump { location: 5204 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 5145 }, Jump { location: 5342 }, Load { destination: Relative(4), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5349 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Const { destination: Relative(13), bit_size: Field, value: 6 }, Const { destination: Relative(22), bit_size: Field, value: 15 }, Const { destination: Relative(24), bit_size: Field, value: 33 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, Load { destination: Relative(27), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 5374 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5378 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 9916 }, Jump { location: 5381 }, Load { destination: Relative(21), source_pointer: Relative(24) }, Const { destination: Relative(24), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(12) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(12) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(10) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(11) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(19) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(10) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(11) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, JumpIf { condition: Relative(21), location: 5493 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(24) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Trap { revert_data: HeapVector { pointer: Relative(24), size: Relative(12) } }, Const { destination: Relative(12), bit_size: Field, value: 35 }, Const { destination: Relative(16), bit_size: Field, value: 65 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(26), source: Relative(22) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5515 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5519 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 9903 }, Jump { location: 5522 }, Load { destination: Relative(4), source_pointer: Relative(12) }, JumpIf { condition: Relative(4), location: 5525 }, Call { location: 11796 }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5534 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5560 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5564 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(21), location: 9852 }, Jump { location: 5567 }, Load { destination: Relative(4), source_pointer: Relative(24) }, Load { destination: Relative(12), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5575 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 5601 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(26) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Store { destination_pointer: Relative(27), source: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(4) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(26), size: Relative(24) } }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, Mov { destination: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32842) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Load { destination: Relative(26), source_pointer: Relative(12) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5636 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(26) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5640 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 9825 }, Jump { location: 5643 }, Load { destination: Relative(4), source_pointer: Relative(21) }, Load { destination: Relative(12), source_pointer: Relative(24) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(3), source: Relative(16) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5673 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5677 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 9774 }, Jump { location: 5680 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5688 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(16) }, JumpIf { condition: Relative(6), location: 5714 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(26) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, Store { destination_pointer: Relative(22), source: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(3) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(12) } }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 5720 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 5726 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(6) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5748 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 9745 }, Jump { location: 5751 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5758 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 5769 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(7) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5795 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 5798 }, Jump { location: 6040 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(16) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5806 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 6039 }, Jump { location: 5811 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(16) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5819 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(22), source: Direct(32773) }, Mov { destination: Relative(27), source: Direct(32774) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Load { destination: Relative(3), source_pointer: Relative(22) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5836 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(3) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(24), rhs: Relative(3) }, JumpIf { condition: Relative(12), location: 5844 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(12), location: 6037 }, Jump { location: 5848 }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Direct(32843) }, Mov { destination: Relative(6), source: Relative(24) }, Jump { location: 5855 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(26) }, JumpIf { condition: Relative(27), location: 5963 }, Jump { location: 5858 }, Load { destination: Relative(6), source_pointer: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 5863 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(12) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, JumpIf { condition: Relative(21), location: 5873 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(33), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(12) }, Store { destination_pointer: Relative(35), source: Relative(21) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(29) }, Store { destination_pointer: Relative(21), source: Relative(32) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(22) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, Store { destination_pointer: Relative(22), source: Relative(30) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5917 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, JumpIf { condition: Relative(28), location: 5923 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(21) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(26) }, Store { destination_pointer: Relative(7), source: Relative(28) }, Store { destination_pointer: Relative(16), source: Relative(29) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(6), location: 5937 }, Jump { location: 5961 }, Load { destination: Relative(6), source_pointer: Relative(29) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 5943 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 5949 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(29) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(22), source: Direct(32773) }, Mov { destination: Relative(26), source: Direct(32774) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Jump { location: 5961 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5795 }, Load { destination: Relative(27), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(28), location: 5967 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(28), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, JumpIf { condition: Relative(21), location: 5973 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(22) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(29), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 5979 }, Jump { location: 6034 }, Load { destination: Relative(27), source_pointer: Relative(4) }, Load { destination: Relative(29), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(29), rhs: Direct(32836) }, JumpIf { condition: Relative(30), location: 5984 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(28) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(35) }, Load { destination: Relative(36), source_pointer: Relative(38) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(37), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(34) }, Mov { destination: Direct(32771), source: Relative(37) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(32) }, Store { destination_pointer: Relative(34), source: Relative(36) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(28) }, Store { destination_pointer: Relative(34), source: Relative(31) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(35) }, Store { destination_pointer: Relative(31), source: Relative(33) }, Store { destination_pointer: Relative(4), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6032 }, Call { location: 11616 }, Store { destination_pointer: Relative(12), source: Relative(27) }, Jump { location: 6034 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(27) }, Jump { location: 5855 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5795 }, Jump { location: 6040 }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Field, value: 12 }, Const { destination: Relative(6), bit_size: Field, value: 30 }, Const { destination: Relative(7), bit_size: Field, value: 70 }, Const { destination: Relative(12), bit_size: Field, value: 66 }, Const { destination: Relative(16), bit_size: Field, value: 130 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(22) }, Store { destination_pointer: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(7) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(16) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 6072 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6076 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 9722 }, Jump { location: 6079 }, Load { destination: Relative(3), source_pointer: Relative(6) }, JumpIf { condition: Relative(3), location: 6082 }, Call { location: 11799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(12) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(12), bit_size: Field, value: 42 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, JumpIf { condition: Relative(22), location: 6136 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6143 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, Load { destination: Relative(28), source_pointer: Relative(16) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6157 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32869) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(32), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(33), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(34), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(34), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Relative(36), source: Relative(35) }, Store { destination_pointer: Relative(36), source: Relative(4) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, Store { destination_pointer: Relative(30), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Store { destination_pointer: Relative(32), source: Direct(32842) }, Store { destination_pointer: Relative(33), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6197 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 9692 }, Jump { location: 6200 }, Load { destination: Relative(24), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(28), source_pointer: Relative(32) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(29) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 6209 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(35), size: Relative(36) }, output: HeapArray { pointer: Relative(37), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(30), source: Relative(24) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Store { destination_pointer: Relative(32), source: Relative(28) }, Store { destination_pointer: Relative(33), source: Direct(32841) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Cast { destination: Relative(28), source: Relative(24), bit_size: Integer(U32) }, Cast { destination: Relative(26), source: Relative(28), bit_size: Field }, Cast { destination: Relative(24), source: Relative(26), bit_size: Integer(U32) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 6234 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6238 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(26), location: 6241 }, Jump { location: 6306 }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 6247 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6257 }, BinaryIntOp { destination: Relative(32), op: Div, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(32), rhs: Relative(1) }, JumpIf { condition: Relative(31), location: 6257 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(26) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(29) }, JumpIf { condition: Relative(30), location: 6261 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(24), rhs: Relative(29) }, JumpIf { condition: Relative(30), location: 6266 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(29), rhs: Relative(21) }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, BinaryIntOp { destination: Relative(29), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Relative(21) }, JumpIf { condition: Relative(29), location: 6272 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Direct(32844) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Load { destination: Relative(26), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(29), source_pointer: Relative(34) }, Not { destination: Relative(30), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(26) }, JumpIf { condition: Relative(29), location: 6296 }, Jump { location: 6300 }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(31), rhs: Relative(4) }, JumpIf { condition: Relative(26), location: 6303 }, Jump { location: 6299 }, Jump { location: 6300 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(26) }, Jump { location: 6238 }, Store { destination_pointer: Relative(22), source: Direct(32841) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Jump { location: 6306 }, Load { destination: Relative(1), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, JumpIf { condition: Relative(1), location: 6310 }, Jump { location: 6318 }, JumpIf { condition: Relative(1), location: 6313 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(16), rhs: Relative(12) }, JumpIf { condition: Relative(1), location: 6317 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, Jump { location: 6318 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6325 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32869) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(4) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Direct(32842) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6365 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9662 }, Jump { location: 6368 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6377 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(22), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6404 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6408 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6411 }, Jump { location: 6519 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6419 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6429 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6429 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6433 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6438 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6444 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6468 }, Jump { location: 6472 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6475 }, Jump { location: 6471 }, Jump { location: 6472 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6408 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 6481 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(31) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 6515 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6519 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6527 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 6533 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(24) } }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6539 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(16) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32869) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(4) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(16), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6579 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9632 }, Jump { location: 6582 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6591 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6618 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6622 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6625 }, Jump { location: 6733 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6633 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6643 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6643 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6647 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6652 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6658 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6682 }, Jump { location: 6686 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6689 }, Jump { location: 6685 }, Jump { location: 6686 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6622 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 6695 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Store { destination_pointer: Relative(24), source: Relative(31) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(21) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(4) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 6729 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Jump { location: 6733 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6741 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32838) }, JumpIf { condition: Relative(16), location: 6747 }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(22) } }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6753 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, Const { destination: Relative(4), bit_size: Field, value: 1 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(12) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6774 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U1, lhs: Relative(24), rhs: Direct(32837) }, JumpIf { condition: Relative(22), location: 6781 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(12) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6787 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(22) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32869) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(32), source: Relative(4) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, Store { destination_pointer: Relative(22), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(12) }, Store { destination_pointer: Relative(28), source: Direct(32842) }, Store { destination_pointer: Relative(29), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6827 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9602 }, Jump { location: 6830 }, Load { destination: Relative(12), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6839 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(29), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6866 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6870 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6873 }, Jump { location: 6981 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6881 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6891 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6891 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6895 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6900 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6906 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6930 }, Jump { location: 6934 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6937 }, Jump { location: 6933 }, Jump { location: 6934 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6870 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 6943 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(31) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 6977 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6981 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6989 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 6995 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(24) } }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7001 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Field, value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(9) }, Mov { destination: Relative(31), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(2) }, Mov { destination: Relative(31), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7042 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, JumpIf { condition: Relative(2), location: 7048 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(13) } }, Const { destination: Relative(2), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(9) }, Mov { destination: Relative(31), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7066 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 7072 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7078 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32869) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(4) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, Store { destination_pointer: Relative(12), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(2) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, Store { destination_pointer: Relative(28), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7118 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(2), location: 9572 }, Jump { location: 7121 }, Load { destination: Relative(2), source_pointer: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(13) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(24), size: Relative(29) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(12), source: Relative(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(28), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(12) }, Cast { destination: Relative(13), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(12), source: Relative(13), bit_size: Field }, Cast { destination: Relative(2), source: Relative(12), bit_size: Integer(U32) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(13) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7157 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7161 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 7164 }, Jump { location: 7272 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7172 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 7182 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 7182 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 7186 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 7191 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 7197 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, Not { destination: Relative(16), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(28), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(24) }, JumpIf { condition: Relative(28), location: 7221 }, Jump { location: 7225 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(27), rhs: Relative(4) }, JumpIf { condition: Relative(16), location: 7228 }, Jump { location: 7224 }, Jump { location: 7225 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7161 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 7234 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(2), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(26) }, Store { destination_pointer: Relative(21), source: Relative(27) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(13), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7268 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Jump { location: 7272 }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7280 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, JumpIf { condition: Relative(13), location: 7286 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, Load { destination: Relative(12), source_pointer: Relative(20) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7292 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(12), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(12) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7302 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(22) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(12) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, Mov { destination: Relative(21), source: Relative(12) }, Store { destination_pointer: Relative(21), source: Direct(32837) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32837) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Store { destination_pointer: Relative(7), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 7333 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Load { destination: Relative(22), source_pointer: Relative(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7344 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32869) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(32), source: Relative(14) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, Store { destination_pointer: Relative(26), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Direct(32842) }, Store { destination_pointer: Relative(29), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7384 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 9542 }, Jump { location: 7387 }, Load { destination: Relative(1), source_pointer: Relative(26) }, Load { destination: Relative(13), source_pointer: Relative(27) }, Load { destination: Relative(16), source_pointer: Relative(28) }, Load { destination: Relative(20), source_pointer: Relative(13) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 7396 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(22), size: Relative(24) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(26), source: Relative(1) }, Store { destination_pointer: Relative(27), source: Relative(20) }, Store { destination_pointer: Relative(28), source: Relative(16) }, Store { destination_pointer: Relative(29), source: Direct(32841) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(1) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7416 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(12) }, JumpIf { condition: Relative(1), location: 7534 }, Jump { location: 7421 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(2), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(1) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(8) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32852) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32863) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32862) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32846) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32858) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32853) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32868) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(1), size: 19 }), HeapArray(HeapArray { pointer: Relative(8), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 7701 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7542 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7553 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32869) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(14) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(26) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7593 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 9512 }, Jump { location: 7596 }, Load { destination: Relative(13), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 7605 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(28), size: Relative(29) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(13) }, Store { destination_pointer: Relative(21), source: Relative(26) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Cast { destination: Relative(18), source: Relative(13), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(18), bit_size: Field }, Cast { destination: Relative(13), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7630 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7634 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 7637 }, Jump { location: 7696 }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7643 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(20), location: 7653 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 7653 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 7657 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(20), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 7662 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(20), location: 7668 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Direct(32844) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32842) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Load { destination: Relative(20), source_pointer: Relative(26) }, Not { destination: Relative(21), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(16) }, JumpIf { condition: Relative(20), location: 7687 }, Jump { location: 7691 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(22), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 7694 }, Jump { location: 7690 }, Jump { location: 7691 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7634 }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Jump { location: 7696 }, Load { destination: Relative(1), source_pointer: Relative(12) }, JumpIf { condition: Relative(1), location: 7700 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Jump { location: 7701 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7710 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(20) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(13) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7736 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7740 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(13), location: 9461 }, Jump { location: 7743 }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7751 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7777 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(26) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, Store { destination_pointer: Relative(22), source: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(12) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(13) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(20) } }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7783 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Const { destination: Relative(16), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(21), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(10) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(11) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(21), source: Direct(32867) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(10) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32857) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32852) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(19) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32854) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32857) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32852) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32868) }, Load { destination: Relative(5), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7867 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7871 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9414 }, Jump { location: 7874 }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7880 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 7906 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7910 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9370 }, Jump { location: 7913 }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Load { destination: Relative(13), source_pointer: Relative(10) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7921 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 7947 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(12) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Load { destination: Relative(13), source_pointer: Relative(10) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 7953 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32869) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7974 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7982 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(18) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7986 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 9150 }, Jump { location: 7989 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(14) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8013 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8017 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9106 }, Jump { location: 8020 }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 8028 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(8), location: 8054 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(14) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(16) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(18) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(14), size: Relative(13) } }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 8060 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(14) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32860) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32852) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, Load { destination: Relative(8), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8112 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8116 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(8), location: 9078 }, Jump { location: 8119 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 8128 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 8145 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(20) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(18) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(14) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8171 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8175 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(11), location: 9027 }, Jump { location: 8178 }, Load { destination: Relative(2), source_pointer: Relative(18) }, Load { destination: Relative(5), source_pointer: Relative(19) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8186 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 8212 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(11) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(18), source_pointer: Relative(5) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 8247 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(18) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8251 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 9000 }, Jump { location: 8254 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8266 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(11) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 8292 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8296 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(11), location: 8949 }, Jump { location: 8299 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(18) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8307 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 8333 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(11) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(17), source_pointer: Relative(5) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 8368 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(17) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8372 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 8923 }, Jump { location: 8375 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 8387 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(5), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8392 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(8), location: 8850 }, Jump { location: 8395 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 8403 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8407 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 8767 }, Jump { location: 8410 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(5) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Const { destination: Relative(8), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 8525 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 8533 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 8538 }, Jump { location: 8558 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32869) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 8554 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 8563 }, Jump { location: 8557 }, Jump { location: 8558 }, Load { destination: Relative(1), source_pointer: Relative(5) }, JumpIf { condition: Relative(1), location: 8562 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, JumpIf { condition: Relative(8), location: 8565 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 8591 }, Jump { location: 8734 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32839) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 8603 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(11) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Store { destination_pointer: Relative(16), source: Direct(32842) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 8630 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 8737 }, Jump { location: 8633 }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(15) }, Load { destination: Relative(19), source_pointer: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(18) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 8642 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(22), size: Relative(23) }, output: HeapArray { pointer: Relative(24), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(13), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(20) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(17), source: Direct(32841) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32842) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Cast { destination: Relative(15), source: Relative(13), bit_size: Integer(U32) }, Cast { destination: Relative(14), source: Relative(15), bit_size: Field }, Cast { destination: Relative(13), source: Relative(14), bit_size: Integer(U32) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 8663 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, JumpIf { condition: Relative(14), location: 8666 }, Jump { location: 8723 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 8674 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(8) }, JumpIf { condition: Relative(17), location: 8674 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 8678 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 8683 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(14), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(1) }, JumpIf { condition: Relative(15), location: 8689 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 8713 }, Jump { location: 8717 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(17), rhs: Relative(11) }, JumpIf { condition: Relative(14), location: 8720 }, Jump { location: 8716 }, Jump { location: 8717 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(14) }, Jump { location: 8663 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Store { destination_pointer: Relative(10), source: Relative(18) }, Jump { location: 8723 }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(10) }, JumpIf { condition: Relative(8), location: 8729 }, Jump { location: 8727 }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Jump { location: 8734 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 8734 }, Jump { location: 8732 }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Jump { location: 8734 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 8554 }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(18), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, JumpIf { condition: Relative(18), location: 8741 }, Jump { location: 8764 }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(15) }, Load { destination: Relative(19), source_pointer: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(8) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(8) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryFieldOp { destination: Relative(23), op: Add, lhs: Relative(21), rhs: Relative(22) }, Mov { destination: Direct(32771), source: Relative(18) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(8) }, Store { destination_pointer: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(13), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(17), source: Relative(20) }, Jump { location: 8764 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(14) }, Jump { location: 8630 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 8772 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(8), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 8796 }, Jump { location: 8847 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Direct(32840) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Direct(32840) }, Not { destination: Relative(15), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(15) }, JumpIf { condition: Relative(8), location: 8847 }, Jump { location: 8803 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(15), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(15) }, JumpIf { condition: Relative(17), location: 8810 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 8813 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(13) }, Call { location: 11625 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(5) }, Store { destination_pointer: Relative(18), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 11625 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(13), source: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 11625 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Store { destination_pointer: Relative(13), source: Relative(14) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(3), source: Relative(16) }, Jump { location: 8847 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 8407 }, Load { destination: Relative(8), source_pointer: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, JumpIf { condition: Relative(14), location: 8855 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(11), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 8879 }, Jump { location: 8920 }, BinaryFieldOp { destination: Relative(11), op: Mul, lhs: Relative(18), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(10) }, Load { destination: Relative(17), source_pointer: Relative(12) }, Load { destination: Relative(18), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(14) }, JumpIf { condition: Relative(19), location: 8886 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 11625 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, Store { destination_pointer: Relative(21), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 11625 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 11625 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 11625 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Jump { location: 8920 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(8) }, Jump { location: 8392 }, JumpIf { condition: Relative(14), location: 8925 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(17), rhs: Relative(15) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(11) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(8) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 8372 }, JumpIf { condition: Relative(11), location: 8951 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Load { destination: Relative(11), source_pointer: Relative(23) }, Not { destination: Relative(19), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 8975 }, Jump { location: 8997 }, Load { destination: Relative(11), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(14) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 8983 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(23), source: Direct(32773) }, Mov { destination: Relative(24), source: Direct(32774) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(18), source: Relative(23) }, Jump { location: 8997 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 8296 }, JumpIf { condition: Relative(14), location: 9002 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(14) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryFieldOp { destination: Relative(19), op: Add, lhs: Relative(18), rhs: Relative(4) }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(14), rhs: Relative(15) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(8) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 8251 }, JumpIf { condition: Relative(11), location: 9029 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(11), source_pointer: Relative(23) }, Not { destination: Relative(16), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 9053 }, Jump { location: 9075 }, Load { destination: Relative(11), source_pointer: Relative(18) }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9061 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(23), source: Direct(32773) }, Mov { destination: Relative(24), source: Direct(32774) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(23) }, Jump { location: 9075 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 8175 }, JumpIf { condition: Relative(8), location: 9080 }, Call { location: 11619 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(13) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 9090 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 9098 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(10), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(8) }, Jump { location: 8116 }, JumpIf { condition: Relative(5), location: 9108 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(5), location: 9127 }, Jump { location: 9147 }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9135 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(20), source: Direct(32773) }, Mov { destination: Relative(21), source: Direct(32774) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Store { destination_pointer: Relative(10), source: Relative(16) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Jump { location: 9147 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 8017 }, JumpIf { condition: Relative(14), location: 9152 }, Call { location: 11619 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(18), source_pointer: Relative(8) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9162 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9173 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, Load { destination: Relative(20), source_pointer: Relative(13) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 9181 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(14) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(13) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(16), source: Direct(32838) }, Jump { location: 9208 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 9340 }, Jump { location: 9211 }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 9220 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(19), source_pointer: Relative(20) }, Cast { destination: Relative(21), source: Relative(19), bit_size: Integer(U32) }, Cast { destination: Relative(20), source: Relative(21), bit_size: Field }, Cast { destination: Relative(19), source: Relative(20), bit_size: Integer(U32) }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9245 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, Mov { destination: Relative(16), source: Direct(32838) }, Jump { location: 9249 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(20), location: 9252 }, Jump { location: 9316 }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9258 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(16) }, JumpIf { condition: Relative(23), location: 9268 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(16) }, JumpIf { condition: Relative(26), location: 9268 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(20) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(16), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 9272 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 9277 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(23), rhs: Relative(2) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(2) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(23), location: 9283 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Load { destination: Relative(20), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(29) }, Not { destination: Relative(24), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(24), rhs: Relative(20) }, JumpIf { condition: Relative(23), location: 9307 }, Jump { location: 9311 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(26), rhs: Relative(14) }, JumpIf { condition: Relative(20), location: 9314 }, Jump { location: 9310 }, Jump { location: 9311 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Relative(16), source: Relative(20) }, Jump { location: 9249 }, Store { destination_pointer: Relative(18), source: Relative(27) }, Jump { location: 9316 }, Load { destination: Relative(16), source_pointer: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9323 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9331 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(18), size: 16 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(14)), MemoryAddress(Relative(16)), HeapArray(HeapArray { pointer: Relative(21), size: 16 }), HeapArray(HeapArray { pointer: Relative(23), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 7986 }, Load { destination: Relative(19), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(21), location: 9344 }, Jump { location: 9367 }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Store { destination_pointer: Relative(27), source: Relative(28) }, Jump { location: 9367 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Relative(16), source: Relative(19) }, Jump { location: 9208 }, JumpIf { condition: Relative(5), location: 9372 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(10) }, JumpIf { condition: Relative(5), location: 9391 }, Jump { location: 9411 }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(10) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9399 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(20), source: Direct(32773) }, Mov { destination: Relative(21), source: Direct(32774) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Store { destination_pointer: Relative(14), source: Relative(20) }, Jump { location: 9411 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 7910 }, Load { destination: Relative(5), source_pointer: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 9420 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(5), location: 9425 }, Jump { location: 9458 }, JumpIf { condition: Relative(5), location: 9427 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 9443 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9451 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(10)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(20), size: 16 }), HeapArray(HeapArray { pointer: Relative(21), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 9458 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 7871 }, JumpIf { condition: Relative(13), location: 9463 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Not { destination: Relative(20), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(14) }, JumpIf { condition: Relative(13), location: 9487 }, Jump { location: 9509 }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(20), source_pointer: Relative(14) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 9495 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(27), source: Direct(32774) }, Store { destination_pointer: Relative(27), source: Relative(21) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(16), source: Relative(20) }, Store { destination_pointer: Relative(18), source: Relative(26) }, Jump { location: 9509 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7740 }, Load { destination: Relative(13), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 9516 }, Jump { location: 9539 }, Load { destination: Relative(13), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Add, lhs: Relative(27), rhs: Relative(28) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Store { destination_pointer: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(20), source: Relative(13) }, Store { destination_pointer: Relative(21), source: Relative(27) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Store { destination_pointer: Relative(24), source: Relative(26) }, Jump { location: 9539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7593 }, Load { destination: Relative(13), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 9546 }, Jump { location: 9569 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(20), source_pointer: Relative(28) }, Load { destination: Relative(21), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(31) }, BinaryFieldOp { destination: Relative(30), op: Add, lhs: Relative(22), rhs: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Store { destination_pointer: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(13) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Relative(20) }, Store { destination_pointer: Relative(29), source: Relative(21) }, Jump { location: 9569 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7384 }, Load { destination: Relative(2), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(13), location: 9576 }, Jump { location: 9599 }, Load { destination: Relative(2), source_pointer: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Add, lhs: Relative(22), rhs: Relative(24) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Store { destination_pointer: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(12), source: Relative(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Jump { location: 9599 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7118 }, Load { destination: Relative(12), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 9606 }, Jump { location: 9629 }, Load { destination: Relative(12), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(26), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(29), source: Relative(24) }, Jump { location: 9629 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6827 }, Load { destination: Relative(12), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 9636 }, Jump { location: 9659 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(28) }, Jump { location: 9659 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6579 }, Load { destination: Relative(12), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 9666 }, Jump { location: 9689 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(22), source: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Jump { location: 9689 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6365 }, Load { destination: Relative(24), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 9696 }, Jump { location: 9719 }, Load { destination: Relative(24), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(28), source_pointer: Relative(32) }, Load { destination: Relative(29), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(1) }, Load { destination: Relative(35), source_pointer: Relative(37) }, BinaryFieldOp { destination: Relative(36), op: Add, lhs: Relative(34), rhs: Relative(35) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, Store { destination_pointer: Relative(37), source: Relative(36) }, Store { destination_pointer: Relative(30), source: Relative(24) }, Store { destination_pointer: Relative(31), source: Relative(34) }, Store { destination_pointer: Relative(32), source: Relative(28) }, Store { destination_pointer: Relative(33), source: Relative(29) }, Jump { location: 9719 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 6197 }, Load { destination: Relative(7), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(12) }, Load { destination: Relative(16), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(12) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(12), source_pointer: Relative(28) }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(16), rhs: Relative(26) }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(24), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U1, lhs: Relative(7), rhs: Relative(12) }, Store { destination_pointer: Relative(6), source: Relative(16) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(7) }, Jump { location: 6076 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(6) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(3) }, Store { destination_pointer: Relative(26), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(3), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(6), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5748 }, JumpIf { condition: Relative(3), location: 9776 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(3), source_pointer: Relative(28) }, Not { destination: Relative(22), source: Relative(3), bit_size: U1 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(21) }, JumpIf { condition: Relative(3), location: 9800 }, Jump { location: 9822 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 9808 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(29), source: Direct(32774) }, Store { destination_pointer: Relative(29), source: Relative(24) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(28) }, Jump { location: 9822 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5677 }, JumpIf { condition: Relative(22), location: 9827 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(27), op: Mul, lhs: Relative(26), rhs: Relative(15) }, BinaryFieldOp { destination: Relative(26), op: Mul, lhs: Relative(22), rhs: Relative(15) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 28 }, Mov { destination: Relative(28), source: Direct(0) }, Mov { destination: Relative(29), source: Relative(21) }, Mov { destination: Relative(30), source: Relative(24) }, Mov { destination: Relative(31), source: Relative(16) }, Mov { destination: Relative(32), source: Relative(27) }, Mov { destination: Relative(33), source: Relative(26) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(22) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 5640 }, JumpIf { condition: Relative(21), location: 9854 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(31) }, Not { destination: Relative(27), source: Relative(21), bit_size: U1 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U1, lhs: Relative(27), rhs: Relative(22) }, JumpIf { condition: Relative(21), location: 9878 }, Jump { location: 9900 }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(22) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 9886 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(31), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(28) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(31) }, Jump { location: 9900 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 5564 }, Load { destination: Relative(16), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(22), rhs: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(26) }, Store { destination_pointer: Relative(12), source: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 5519 }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Equals, lhs: Relative(27), rhs: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 5378 }, JumpIf { condition: Relative(24), location: 9931 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(32) }, Not { destination: Relative(29), source: Relative(24), bit_size: U1 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(26) }, JumpIf { condition: Relative(24), location: 9950 }, Jump { location: 9970 }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 9958 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Store { destination_pointer: Relative(28), source: Relative(32) }, Jump { location: 9970 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 5036 }, JumpIf { condition: Relative(22), location: 9975 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(31) }, Not { destination: Relative(28), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(24) }, JumpIf { condition: Relative(22), location: 9994 }, Jump { location: 10014 }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(24) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10002 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(31), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(31) }, Jump { location: 10014 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 4690 }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 10022 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(16) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, Not { destination: Relative(21), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(22) }, JumpIf { condition: Relative(27), location: 10046 }, Jump { location: 10087 }, BinaryFieldOp { destination: Relative(21), op: Mul, lhs: Relative(28), rhs: Relative(2) }, Load { destination: Relative(22), source_pointer: Relative(6) }, Load { destination: Relative(27), source_pointer: Relative(7) }, Load { destination: Relative(28), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(29), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(29), location: 10053 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(27) }, Call { location: 11625 }, Mov { destination: Relative(29), source: Direct(32772) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Store { destination_pointer: Relative(31), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(29) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Store { destination_pointer: Relative(30), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(24), source: Direct(32772) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Store { destination_pointer: Relative(29), source: Relative(21) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(24) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(16) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(28) }, Jump { location: 10087 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4648 }, JumpIf { condition: Relative(24), location: 10092 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(28), op: Mul, lhs: Relative(27), rhs: Relative(9) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 29 }, Mov { destination: Relative(29), source: Direct(0) }, Mov { destination: Relative(30), source: Relative(22) }, Mov { destination: Relative(31), source: Relative(26) }, Mov { destination: Relative(32), source: Relative(21) }, Mov { destination: Relative(33), source: Relative(28) }, Mov { destination: Relative(34), source: Relative(24) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(27) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 4629 }, JumpIf { condition: Relative(22), location: 10118 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(32) }, Not { destination: Relative(28), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(24) }, JumpIf { condition: Relative(22), location: 10142 }, Jump { location: 10164 }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10150 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(29) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Jump { location: 10164 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 4553 }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(22) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(22), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(24), rhs: Relative(28) }, BinaryFieldOp { destination: Relative(24), op: Equals, lhs: Relative(27), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 4449 }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryFieldOp { destination: Relative(27), op: Equals, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(27) }, Store { destination_pointer: Relative(7), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 4413 }, Load { destination: Relative(24), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Equals, lhs: Relative(26), rhs: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U1, lhs: Relative(24), rhs: Relative(28) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 4383 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, Load { destination: Relative(28), source_pointer: Relative(7) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Store { destination_pointer: Relative(31), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(29) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(3), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4066 }, JumpIf { condition: Relative(3), location: 10247 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(3) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(3), source_pointer: Relative(32) }, Not { destination: Relative(28), source: Relative(3), bit_size: U1 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(27) }, JumpIf { condition: Relative(3), location: 10271 }, Jump { location: 10293 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10279 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(29) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(32) }, Jump { location: 10293 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 3818 }, JumpIf { condition: Relative(25), location: 10298 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(25), source_pointer: Relative(32) }, Not { destination: Relative(29), source: Relative(25), bit_size: U1 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(26) }, JumpIf { condition: Relative(25), location: 10317 }, Jump { location: 10337 }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10325 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Store { destination_pointer: Relative(28), source: Relative(32) }, Jump { location: 10337 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(25) }, Jump { location: 3305 }, JumpIf { condition: Relative(23), location: 10342 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(23), source_pointer: Relative(30) }, Not { destination: Relative(27), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(27), rhs: Relative(24) }, JumpIf { condition: Relative(23), location: 10361 }, Jump { location: 10381 }, Load { destination: Relative(23), source_pointer: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 10369 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(30), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Store { destination_pointer: Relative(25), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(30) }, Jump { location: 10381 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(23) }, Jump { location: 2788 }, Load { destination: Relative(3), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(17), location: 10388 }, Jump { location: 10411 }, Load { destination: Relative(3), source_pointer: Relative(9) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(9), source: Relative(3) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(25) }, Jump { location: 10411 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 2581 }, Load { destination: Relative(14), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(14) }, JumpIf { condition: Relative(23), location: 10419 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(14) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(30) }, Not { destination: Relative(22), source: Relative(28), bit_size: U1 }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(23) }, JumpIf { condition: Relative(26), location: 10443 }, Jump { location: 10491 }, BinaryFieldOp { destination: Relative(22), op: Mul, lhs: Relative(25), rhs: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(22), rhs: Relative(21) }, JumpIf { condition: Relative(26), location: 10491 }, Jump { location: 10447 }, Load { destination: Relative(22), source_pointer: Relative(6) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Load { destination: Relative(28), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(29), op: Sub, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(28) }, JumpIf { condition: Relative(30), location: 10454 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(28), location: 10457 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(26) }, Call { location: 11625 }, Mov { destination: Relative(28), source: Direct(32772) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, Store { destination_pointer: Relative(31), source: Relative(23) }, Mov { destination: Direct(32771), source: Relative(28) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, Store { destination_pointer: Relative(26), source: Relative(25) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(24), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Store { destination_pointer: Relative(26), source: Relative(27) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(24) }, Call { location: 11625 }, Mov { destination: Relative(23), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(14) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(23) }, Store { destination_pointer: Relative(9), source: Relative(29) }, Jump { location: 10491 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 2528 }, JumpIf { condition: Relative(14), location: 10496 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(23) }, Load { destination: Relative(16), source_pointer: Relative(13) }, Not { destination: Relative(22), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 10522 }, Jump { location: 10665 }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 10534 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, Store { destination_pointer: Relative(22), source: Relative(27) }, Store { destination_pointer: Relative(24), source: Relative(3) }, Store { destination_pointer: Relative(25), source: Direct(32842) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(32838) }, Jump { location: 10561 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, JumpIf { condition: Relative(23), location: 10668 }, Jump { location: 10564 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(27) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10573 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(31), size: Relative(32) }, output: HeapArray { pointer: Relative(33), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(25), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Load { destination: Relative(22), source_pointer: Relative(23) }, Cast { destination: Relative(24), source: Relative(22), bit_size: Integer(U32) }, Cast { destination: Relative(23), source: Relative(24), bit_size: Field }, Cast { destination: Relative(22), source: Relative(23), bit_size: Integer(U32) }, Mov { destination: Relative(14), source: Direct(32838) }, Jump { location: 10594 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(23), location: 10597 }, Jump { location: 10654 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(14) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(14) }, JumpIf { condition: Relative(24), location: 10605 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(23), rhs: Relative(14) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(14) }, JumpIf { condition: Relative(26), location: 10605 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10609 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(23), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10614 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(6) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(25), rhs: Relative(6) }, BinaryIntOp { destination: Relative(23), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(6) }, JumpIf { condition: Relative(24), location: 10620 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(23), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(25) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Not { destination: Relative(25), source: Relative(24), bit_size: U1 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(25), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 10644 }, Jump { location: 10648 }, BinaryFieldOp { destination: Relative(23), op: Equals, lhs: Relative(26), rhs: Relative(17) }, JumpIf { condition: Relative(23), location: 10651 }, Jump { location: 10647 }, Jump { location: 10648 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Relative(14), source: Relative(23) }, Jump { location: 10594 }, Store { destination_pointer: Relative(15), source: Direct(32841) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Jump { location: 10654 }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(16) }, JumpIf { condition: Relative(14), location: 10660 }, Jump { location: 10658 }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Jump { location: 10665 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(21), rhs: Relative(15) }, JumpIf { condition: Relative(14), location: 10665 }, Jump { location: 10663 }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Jump { location: 10665 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Mov { destination: Relative(9), source: Relative(14) }, Jump { location: 2436 }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, JumpIf { condition: Relative(27), location: 10672 }, Jump { location: 10695 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(14) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(14) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryFieldOp { destination: Relative(32), op: Add, lhs: Relative(30), rhs: Relative(31) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(14) }, Store { destination_pointer: Relative(33), source: Relative(32) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(30) }, Store { destination_pointer: Relative(25), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Jump { location: 10695 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Relative(14), source: Relative(23) }, Jump { location: 10561 }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 10702 }, Jump { location: 10725 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(26) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(23), source: Relative(25) }, Jump { location: 10725 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 2222 }, JumpIf { condition: Relative(23), location: 10730 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(23), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Not { destination: Relative(29), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(23) }, JumpIf { condition: Relative(25), location: 10756 }, Jump { location: 10899 }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32837) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Load { destination: Relative(29), source_pointer: Relative(16) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10768 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(32), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(33), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(34), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(34), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Relative(36), source: Relative(35) }, Store { destination_pointer: Relative(36), source: Relative(27) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, Store { destination_pointer: Relative(29), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(16) }, Store { destination_pointer: Relative(32), source: Direct(32842) }, Store { destination_pointer: Relative(33), source: Direct(32837) }, Mov { destination: Relative(23), source: Direct(32838) }, Jump { location: 10795 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, JumpIf { condition: Relative(30), location: 10902 }, Jump { location: 10798 }, Load { destination: Relative(30), source_pointer: Relative(29) }, Load { destination: Relative(34), source_pointer: Relative(31) }, Load { destination: Relative(35), source_pointer: Relative(32) }, Load { destination: Relative(36), source_pointer: Relative(34) }, Const { destination: Relative(37), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(37), rhs: Relative(36) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 10807 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(36) }, Mov { destination: Relative(36), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(36), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(38), size: Relative(39) }, output: HeapArray { pointer: Relative(40), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(29), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(36) }, Store { destination_pointer: Relative(32), source: Relative(35) }, Store { destination_pointer: Relative(33), source: Direct(32841) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(32842) }, Load { destination: Relative(29), source_pointer: Relative(30) }, Cast { destination: Relative(31), source: Relative(29), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(31), bit_size: Field }, Cast { destination: Relative(29), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(23), source: Direct(32838) }, Jump { location: 10828 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(17) }, JumpIf { condition: Relative(30), location: 10831 }, Jump { location: 10888 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(23), rhs: Relative(23) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(32), rhs: Relative(23) }, JumpIf { condition: Relative(31), location: 10839 }, BinaryIntOp { destination: Relative(34), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(23) }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(23) }, JumpIf { condition: Relative(33), location: 10839 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(30) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(23), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 10843 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 10848 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Div, bit_size: U32, lhs: Relative(31), rhs: Relative(17) }, BinaryIntOp { destination: Relative(33), op: Mul, bit_size: U32, lhs: Relative(32), rhs: Relative(17) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(31), rhs: Relative(33) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(17) }, JumpIf { condition: Relative(31), location: 10854 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32844) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(31) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(31), source_pointer: Relative(36) }, Not { destination: Relative(32), source: Relative(31), bit_size: U1 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U1, lhs: Relative(32), rhs: Relative(30) }, JumpIf { condition: Relative(31), location: 10878 }, Jump { location: 10882 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(33), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 10885 }, Jump { location: 10881 }, Jump { location: 10882 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Relative(23), source: Relative(30) }, Jump { location: 10828 }, Store { destination_pointer: Relative(25), source: Direct(32841) }, Store { destination_pointer: Relative(26), source: Relative(34) }, Jump { location: 10888 }, Load { destination: Relative(23), source_pointer: Relative(25) }, Load { destination: Relative(25), source_pointer: Relative(26) }, JumpIf { condition: Relative(23), location: 10894 }, Jump { location: 10892 }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Jump { location: 10899 }, BinaryFieldOp { destination: Relative(23), op: Equals, lhs: Relative(28), rhs: Relative(25) }, JumpIf { condition: Relative(23), location: 10899 }, Jump { location: 10897 }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Jump { location: 10899 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(23) }, Jump { location: 2181 }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(34), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(30) }, JumpIf { condition: Relative(34), location: 10906 }, Jump { location: 10929 }, Load { destination: Relative(30), source_pointer: Relative(29) }, Load { destination: Relative(34), source_pointer: Relative(31) }, Load { destination: Relative(35), source_pointer: Relative(32) }, Load { destination: Relative(36), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(23) }, Load { destination: Relative(37), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(23) }, Load { destination: Relative(38), source_pointer: Relative(40) }, BinaryFieldOp { destination: Relative(39), op: Add, lhs: Relative(37), rhs: Relative(38) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(37), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(23) }, Store { destination_pointer: Relative(40), source: Relative(39) }, Store { destination_pointer: Relative(29), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(37) }, Store { destination_pointer: Relative(32), source: Relative(35) }, Store { destination_pointer: Relative(33), source: Relative(36) }, Jump { location: 10929 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Relative(23), source: Relative(30) }, Jump { location: 10795 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(23) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 22 }, Mov { destination: Relative(22), source: Direct(0) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(6) }, Mov { destination: Relative(26), source: Relative(17) }, Mov { destination: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 22 }, Mov { destination: Relative(22), source: Direct(0) }, Mov { destination: Relative(23), source: Relative(14) }, Mov { destination: Relative(24), source: Relative(15) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(17) }, Mov { destination: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(16) }, Jump { location: 2102 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Load { destination: Relative(21), source_pointer: Relative(14) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Load { destination: Relative(23), source_pointer: Relative(6) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 10978 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(16) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(23), source: Relative(28) }, Store { destination_pointer: Relative(25), source: Relative(6) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(32838) }, Jump { location: 11005 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 11117 }, Jump { location: 11008 }, Load { destination: Relative(24), source_pointer: Relative(23) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Load { destination: Relative(30), source_pointer: Relative(28) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 11017 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(32) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(32), size: Relative(33) }, output: HeapArray { pointer: Relative(34), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(23), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, Load { destination: Relative(23), source_pointer: Relative(24) }, Cast { destination: Relative(25), source: Relative(23), bit_size: Integer(U32) }, Cast { destination: Relative(24), source: Relative(25), bit_size: Field }, Cast { destination: Relative(23), source: Relative(24), bit_size: Integer(U32) }, Mov { destination: Relative(7), source: Direct(32838) }, Jump { location: 11038 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 11041 }, Jump { location: 11092 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Relative(7) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, JumpIf { condition: Relative(25), location: 11049 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(7) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(7) }, JumpIf { condition: Relative(27), location: 11049 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(25) }, JumpIf { condition: Relative(26), location: 11053 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(25), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(23), rhs: Relative(25) }, JumpIf { condition: Relative(26), location: 11058 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(25), rhs: Relative(13) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(25), rhs: Relative(27) }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, JumpIf { condition: Relative(25), location: 11064 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(25), source_pointer: Relative(29) }, Not { destination: Relative(26), source: Relative(25), bit_size: U1 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 11083 }, Jump { location: 11087 }, BinaryFieldOp { destination: Relative(24), op: Equals, lhs: Relative(27), rhs: Relative(16) }, JumpIf { condition: Relative(24), location: 11090 }, Jump { location: 11086 }, Jump { location: 11087 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(24) }, Jump { location: 11038 }, Store { destination_pointer: Relative(22), source: Direct(32841) }, Jump { location: 11092 }, Load { destination: Relative(7), source_pointer: Relative(22) }, JumpIf { condition: Relative(7), location: 11114 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(23) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(24) }, Call { location: 23 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(13) } }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 2008 }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, JumpIf { condition: Relative(28), location: 11121 }, Jump { location: 11144 }, Load { destination: Relative(24), source_pointer: Relative(23) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Load { destination: Relative(30), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(7) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(7) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(33), op: Add, lhs: Relative(31), rhs: Relative(32) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(7) }, Store { destination_pointer: Relative(34), source: Relative(33) }, Store { destination_pointer: Relative(23), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(31) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Store { destination_pointer: Relative(27), source: Relative(30) }, Jump { location: 11144 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(24) }, Jump { location: 11005 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 11161 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 11169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), MemoryAddress(Relative(6)), HeapArray(HeapArray { pointer: Relative(21), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(16), bit_size: Integer(U32), value: 23 }, Mov { destination: Relative(23), source: Direct(0) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(15) }, Mov { destination: Relative(27), source: Relative(8) }, Mov { destination: Relative(28), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 1802 }, Load { destination: Relative(14), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 11191 }, Jump { location: 11214 }, Load { destination: Relative(14), source_pointer: Relative(20) }, Load { destination: Relative(15), source_pointer: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(19), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(2) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Add, lhs: Relative(24), rhs: Relative(25) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(20), source: Relative(14) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(23), source: Relative(19) }, Jump { location: 11214 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 1291 }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 11221 }, Jump { location: 11244 }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(2) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Add, lhs: Relative(24), rhs: Relative(25) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(19), source: Relative(14) }, Store { destination_pointer: Relative(20), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Jump { location: 11244 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 1023 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(13) }, Mov { destination: Relative(18), source: Relative(4) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 851 }, Load { destination: Relative(8), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11264 }, Jump { location: 11287 }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryFieldOp { destination: Relative(21), op: Add, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(19) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Jump { location: 11287 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(8) }, Jump { location: 701 }, Load { destination: Relative(4), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, JumpIf { condition: Relative(13), location: 11294 }, Jump { location: 11317 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(18), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryFieldOp { destination: Relative(21), op: Add, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(16), source: Relative(18) }, Jump { location: 11317 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(4) }, Jump { location: 484 }, Load { destination: Relative(10), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, JumpIf { condition: Relative(12), location: 11324 }, Jump { location: 11347 }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(18) }, Load { destination: Relative(13), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryFieldOp { destination: Relative(22), op: Add, lhs: Relative(16), rhs: Relative(21) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(23), source: Relative(22) }, Store { destination_pointer: Relative(17), source: Relative(10) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(13) }, Store { destination_pointer: Relative(20), source: Relative(15) }, Jump { location: 11347 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(10) }, Jump { location: 196 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 11355 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 11350 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 12053 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 11375 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32869) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11415 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 11580 }, Jump { location: 11418 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 11427 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(16), size: Relative(17) }, output: HeapArray { pointer: Relative(18), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Cast { destination: Relative(9), source: Relative(7), bit_size: Integer(U32) }, Cast { destination: Relative(8), source: Relative(9), bit_size: Field }, Cast { destination: Relative(7), source: Relative(8), bit_size: Integer(U32) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 11454 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11458 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11461 }, Jump { location: 11579 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 11469 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 11479 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 11479 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11483 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11488 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 11494 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 11521 }, Jump { location: 11516 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 11519 }, Jump { location: 11533 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Jump { location: 11533 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 11527 }, Call { location: 11616 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 11533 }, Load { destination: Relative(12), source_pointer: Relative(10) }, JumpIf { condition: Relative(12), location: 11539 }, Jump { location: 11536 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(9) }, Jump { location: 11458 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 11545 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 11625 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Jump { location: 11579 }, Return, Load { destination: Relative(7), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 11584 }, Jump { location: 11607 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryFieldOp { destination: Relative(17), op: Add, lhs: Relative(15), rhs: Relative(16) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Store { destination_pointer: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(15) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, Jump { location: 11607 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(7) }, Jump { location: 11415 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 11629 }, Jump { location: 11631 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 11650 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 11648 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 11641 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 11650 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 11687 }, Jump { location: 11691 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 11713 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 11712 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 11705 }, Jump { location: 11713 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 11719 }, Jump { location: 11721 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 11736 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 11733 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 11726 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 11736 }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 11748 }, Jump { location: 11765 }, JumpIf { condition: Direct(32781), location: 11750 }, Jump { location: 11754 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 11764 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 11764 }, Jump { location: 11777 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 11777 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 11791 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 11791 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 11784 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 11350 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 12500 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 11818 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32869) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11858 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 12023 }, Jump { location: 11861 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 11870 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(16), size: Relative(17) }, output: HeapArray { pointer: Relative(18), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Cast { destination: Relative(9), source: Relative(7), bit_size: Integer(U32) }, Cast { destination: Relative(8), source: Relative(9), bit_size: Field }, Cast { destination: Relative(7), source: Relative(8), bit_size: Integer(U32) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 11897 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11901 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11904 }, Jump { location: 12022 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 11912 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 11922 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 11922 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11926 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11931 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 11937 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 11964 }, Jump { location: 11959 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 11962 }, Jump { location: 11976 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Jump { location: 11976 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 11970 }, Call { location: 11616 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 11976 }, Load { destination: Relative(12), source_pointer: Relative(10) }, JumpIf { condition: Relative(12), location: 11982 }, Jump { location: 11979 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(9) }, Jump { location: 11901 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 11988 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 11625 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Jump { location: 12022 }, Return, Load { destination: Relative(7), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 12027 }, Jump { location: 12050 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryFieldOp { destination: Relative(17), op: Add, lhs: Relative(15), rhs: Relative(16) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Store { destination_pointer: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(15) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, Jump { location: 12050 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(7) }, Jump { location: 11858 }, Call { location: 11350 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 12062 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 12068 }, Call { location: 11616 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 12075 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 12499 }, Jump { location: 12081 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 12089 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 12096 }, Call { location: 11613 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12116 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 12471 }, Jump { location: 12119 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12139 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 12165 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12169 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 12420 }, Jump { location: 12172 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12180 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32848) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32846) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 12357 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 12383 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12385 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 12395 }, Jump { location: 12388 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 12499 }, JumpIf { condition: Relative(10), location: 12397 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 12385 }, JumpIf { condition: Relative(11), location: 12422 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 12446 }, Jump { location: 12468 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 12454 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 12468 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 12169 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 12479 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11737 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 12116 }, Return, Call { location: 11350 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 12509 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 12515 }, Call { location: 11616 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 12522 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 12946 }, Jump { location: 12528 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 12536 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 12543 }, Call { location: 11613 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12563 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 12918 }, Jump { location: 12566 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12586 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 12612 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12616 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 12867 }, Jump { location: 12619 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12627 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32848) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32846) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 12804 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 12830 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12832 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 12842 }, Jump { location: 12835 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 12946 }, JumpIf { condition: Relative(10), location: 12844 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 12832 }, JumpIf { condition: Relative(11), location: 12869 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 12893 }, Jump { location: 12915 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 12901 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 12915 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 12616 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 12926 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11737 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 12563 }, Return]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -244,7 +244,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index 8238a6519e3..03e619d35d4 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -233,7 +233,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32921 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32909), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32909 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 109 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32921 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Field, value: 1 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32845), bit_size: Field, value: 2 }, Const { destination: Direct(32846), bit_size: Field, value: 3 }, Const { destination: Direct(32847), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32848), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32849), bit_size: Field, value: 5 }, Const { destination: Direct(32850), bit_size: Field, value: 6 }, Const { destination: Direct(32851), bit_size: Field, value: 7 }, Const { destination: Direct(32852), bit_size: Field, value: 11 }, Const { destination: Direct(32853), bit_size: Field, value: 12 }, Const { destination: Direct(32854), bit_size: Field, value: 13 }, Const { destination: Direct(32855), bit_size: Field, value: 30 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 34 }, Const { destination: Direct(32858), bit_size: Field, value: 42 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 50 }, Const { destination: Direct(32863), bit_size: Integer(U8), value: 51 }, Const { destination: Direct(32864), bit_size: Field, value: 55 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32866), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 69 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 73 }, Const { destination: Direct(32869), bit_size: Field, value: 75 }, Const { destination: Direct(32870), bit_size: Field, value: 77 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32872), bit_size: Field, value: 79 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32882), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32884), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32885), bit_size: Field, value: 108 }, Const { destination: Direct(32886), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32887), bit_size: Field, value: 109 }, Const { destination: Direct(32888), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32889), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32890), bit_size: Integer(U8), value: 112 }, Const { destination: Direct(32891), bit_size: Field, value: 112 }, Const { destination: Direct(32892), bit_size: Field, value: 113 }, Const { destination: Direct(32893), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32894), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32895), bit_size: Field, value: 115 }, Const { destination: Direct(32896), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32897), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32898), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32899), bit_size: Field, value: 118 }, Const { destination: Direct(32900), bit_size: Integer(U8), value: 119 }, Const { destination: Direct(32901), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32902), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32903), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32904), bit_size: Field, value: 134 }, Const { destination: Direct(32905), bit_size: Field, value: 135 }, Const { destination: Direct(32906), bit_size: Field, value: 136 }, Const { destination: Direct(32907), bit_size: Field, value: 138 }, Const { destination: Direct(32908), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Return, Call { location: 188 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 194 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 440 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32848) }, Load { destination: Relative(2), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 750 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(2) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 153 }, Call { location: 938 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 941 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, Mov { destination: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 1521 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1690 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1796 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2086 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 4 }, Mov { destination: Relative(4), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2530 }, Mov { destination: Direct(0), source: Relative(0) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 193 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 230 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 250 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(9), location: 255 }, Call { location: 3463 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 262 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Direct(32842) }, Mov { destination: Relative(18), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(9), location: 277 }, Call { location: 3572 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(7) }, Store { destination_pointer: Relative(9), source: Direct(32868) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32888) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32893) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32877) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32902) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32898) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32874) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32897) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32903) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32875) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32897) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32902) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32880) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32903) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32879) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32889) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32893) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32896) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32881) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32894) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32874) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32886) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32856) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32883) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32878) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32901) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32860) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(7), location: 402 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, Mov { destination: Relative(14), source: Relative(13) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(15) }, Mov { destination: Direct(32772), source: Relative(14) }, Mov { destination: Direct(32773), source: Relative(16) }, Call { location: 23 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(14), source: Direct(32844) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(9) } }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 419 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(5), location: 424 }, Call { location: 3723 }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(5), source: Relative(14) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 439 }, Call { location: 3726 }, Return, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 476 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 480 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 737 }, Jump { location: 483 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 491 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(8), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(9), bit_size: Integer(U8), value: 77 }, Mov { destination: Relative(10), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(12), source: Relative(6) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32894) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32881) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(9) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32881) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32894) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32861) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32859) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32902) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32903) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32860) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 597 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(9) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(12) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(13) }, Call { location: 23 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(12) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Direct(32842) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(6), source: Relative(11) }, JumpIf { condition: Relative(5), location: 611 }, Call { location: 3572 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32868) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32888) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32894) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32893) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32877) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32902) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32898) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32874) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32884) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32875) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32897) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32880) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32902) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32880) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32879) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32889) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32893) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32896) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32881) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32894) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32874) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32886) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32856) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32883) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32878) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32901) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32860) }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(2), rhs: Relative(6) }, JumpIf { condition: Relative(3), location: 736 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(5) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(9) }, Mov { destination: Direct(32772), source: Relative(8) }, Mov { destination: Direct(32773), source: Relative(10) }, Call { location: 23 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, Store { destination_pointer: Relative(8), source: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(5), size: Relative(4) } }, Return, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(6) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(4) }, Jump { location: 480 }, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 786 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 816 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 821 }, Call { location: 3729 }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Direct(32842) }, Mov { destination: Relative(14), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(11) }, Mov { destination: Relative(6), source: Relative(12) }, JumpIf { condition: Relative(5), location: 835 }, Call { location: 3572 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 120 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32867) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32890) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32876) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32877) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32902) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32888) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32900) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32873) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32898) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32874) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32884) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32897) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32878) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32903) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32859) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32875) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32897) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32880) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32889) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32856) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32902) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32880) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32889) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32896) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32903) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32860) }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(6), rhs: Relative(3) }, JumpIf { condition: Relative(1), location: 937 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(5) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(10) }, Mov { destination: Direct(32772), source: Relative(8) }, Mov { destination: Direct(32773), source: Relative(11) }, Call { location: 23 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Store { destination_pointer: Relative(8), source: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(5), size: Relative(4) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 977 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 985 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Direct(32868) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32896) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32882) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32880) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32902) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32878) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32888) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32896) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32901) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32903) }, Const { destination: Relative(9), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32876) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(9) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32888) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32865) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32879) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32882) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1225 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1481 }, Jump { location: 1228 }, Load { destination: Relative(3), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1236 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(10) }, Store { destination_pointer: Relative(11), source: Direct(32902) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32865) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32894) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32880) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32859) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32900) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32881) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32857) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32865) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32863) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32862) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(10), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(8), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1325 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(8) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 1330 }, Call { location: 3732 }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1336 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(11), source: Relative(8) }, Store { destination_pointer: Relative(11), source: Direct(32871) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32879) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32889) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32897) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32882) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32894) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32877) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32856) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32902) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32888) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32896) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32893) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32873) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32883) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32878) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32901) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32860) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1415 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1431 }, Jump { location: 1418 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(4) }, Mov { destination: Relative(9), source: Relative(5) }, Mov { destination: Relative(10), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3735 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32838) }, JumpIf { condition: Relative(2), location: 1430 }, Call { location: 3764 }, Return, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1444 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, JumpIf { condition: Relative(11), location: 1478 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(8) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(7) } }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 1415 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1495 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1503 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(9), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(13), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 1225 }, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32842) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1586 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1590 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(9), location: 1659 }, Jump { location: 1593 }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1602 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1613 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(10) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 3767 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(12), location: 1629 }, Call { location: 3866 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(10) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3767 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(15) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1658 }, Call { location: 3869 }, Return, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(10) }, Mov { destination: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(10) }, Mov { destination: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(9) }, Jump { location: 1590 }, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1726 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32849) }, Mov { destination: Relative(12), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32845) }, Mov { destination: Relative(12), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32852) }, Mov { destination: Relative(12), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32907) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 3872 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 1775 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, JumpIf { condition: Relative(4), location: 1780 }, Call { location: 4041 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32844) }, Mov { destination: Relative(12), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(9) }, Mov { destination: Relative(4), source: Relative(10) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1795 }, Call { location: 4044 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1865 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(9) }, Mov { destination: Relative(6), source: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1891 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1902 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(32844) }, Mov { destination: Relative(14), source: Direct(32904) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1920 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1946 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1957 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32905) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(11), source_pointer: Relative(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, Mov { destination: Relative(12), source: Relative(17) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5089 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 1993 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2004 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32906) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5158 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(16) }, JumpIf { condition: Relative(4), location: 2037 }, Call { location: 5334 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2058 }, Call { location: 5337 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32845) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32849) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32852) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5340 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2085 }, Call { location: 5382 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32885) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5385 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32887) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5498 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2173 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(7), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2199 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2210 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Direct(32844) }, Mov { destination: Relative(17), source: Direct(32891) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2228 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 4330 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2254 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2265 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4362 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2283 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Const { destination: Relative(5), bit_size: Field, value: 15 }, Const { destination: Relative(14), bit_size: Field, value: 33 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Const { destination: Relative(15), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32874) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32903) }, JumpIf { condition: Relative(14), location: 2417 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, Mov { destination: Relative(18), source: Relative(17) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Store { destination_pointer: Relative(18), source: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Trap { revert_data: HeapVector { pointer: Relative(17), size: Relative(15) } }, Const { destination: Relative(10), bit_size: Field, value: 35 }, Const { destination: Relative(14), bit_size: Field, value: 65 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5302 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(17) }, JumpIf { condition: Relative(5), location: 2440 }, Call { location: 5337 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32895) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5639 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(5), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5089 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2476 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2487 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32899) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5158 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(1), bit_size: Field, value: 70 }, Const { destination: Relative(4), bit_size: Field, value: 66 }, Const { destination: Relative(10), bit_size: Field, value: 130 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 5340 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, JumpIf { condition: Relative(1), location: 2529 }, Call { location: 5382 }, Return, Call { location: 188 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32853) }, Mov { destination: Relative(10), source: Direct(32858) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2578 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(6), location: 2584 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2591 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(5) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Direct(32842) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5744 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(6) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2618 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(4), location: 2624 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2641 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 2647 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(11) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2653 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2673 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(11) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 2680 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(11) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(1) }, Mov { destination: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2697 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(11), location: 2703 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2709 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32843) }, Mov { destination: Relative(19), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Field, value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32846) }, Mov { destination: Relative(19), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32849) }, Mov { destination: Relative(19), source: Direct(32850) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2750 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 2756 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(1) }, Mov { destination: Relative(20), source: Direct(32846) }, Mov { destination: Relative(21), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2774 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 2780 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(14) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(2) }, Mov { destination: Relative(19), source: Relative(3) }, Mov { destination: Relative(20), source: Relative(1) }, Mov { destination: Relative(21), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3575 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(4) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(14) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 2797 }, Call { location: 938 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, JumpIf { condition: Relative(14), location: 2803 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(14) }, Store { destination_pointer: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32894) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32859) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32900) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32882) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32896) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32857) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32865) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32863) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32862) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32903) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(14), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 2890 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(2) }, Mov { destination: Relative(20), source: Relative(3) }, Mov { destination: Relative(21), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3735 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(18), source_pointer: Relative(4) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 2908 }, Call { location: 938 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(18), location: 2914 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(4) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2921 }, Call { location: 938 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(18) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 23 }, Mov { destination: Relative(23), source: Direct(0) }, Mov { destination: Relative(24), source: Relative(5) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(22) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(18), source: Relative(24) }, Mov { destination: Relative(21), source: Relative(25) }, JumpIf { condition: Relative(18), location: 3049 }, Jump { location: 2936 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32898) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32884) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32897) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32901) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32902) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32883) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32865) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32894) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32896) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32882) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32859) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32884) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32888) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32896) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32865) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32861) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32903) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(4), size: 19 }), HeapArray(HeapArray { pointer: Relative(7), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3075 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3058 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(7), location: 3074 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, Jump { location: 3075 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3084 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 5767 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3100 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32869) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5639 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5385 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 5498 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 3872 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32843) }, Mov { destination: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6299 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, JumpIf { condition: Relative(4), location: 3268 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, Return, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6398 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3287 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3305 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 3309 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3312 }, Jump { location: 3462 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3320 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 3330 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 3330 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 3334 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 3339 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 3345 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 3389 }, Jump { location: 3384 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 3387 }, Jump { location: 3401 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 3401 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 3395 }, Call { location: 6555 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 3401 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 3407 }, Jump { location: 3404 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 3309 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6561 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 3428 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 6575 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 3462 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3479 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3497 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3501 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 3504 }, Jump { location: 3569 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3510 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 3520 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 3520 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3524 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 3529 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 3535 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 3559 }, Jump { location: 3563 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 3566 }, Jump { location: 3562 }, Jump { location: 3563 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 3501 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 3569 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3585 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 6516 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3603 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3607 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 3610 }, Jump { location: 3722 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3618 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 3628 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 3628 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 3632 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 3637 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, JumpIf { condition: Relative(12), location: 3643 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(8), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 3667 }, Jump { location: 3671 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 3674 }, Jump { location: 3670 }, Jump { location: 3671 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 3607 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 3680 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Store { destination_pointer: Relative(9), source: Relative(14) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 3717 }, Call { location: 6601 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 3722 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8591465503772373437 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3777 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3785 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 3790 }, Jump { location: 3805 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3797 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 3801 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 3807 }, Jump { location: 3804 }, Jump { location: 3805 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 3809 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 3835 }, Jump { location: 3863 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3841 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 3858 }, Jump { location: 3856 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 3863 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 3863 }, Jump { location: 3861 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 3863 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 3801 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3881 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32892) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32904) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32905) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 3890 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 3894 }, Jump { location: 3893 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 3899 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(13), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 3923 }, Jump { location: 4038 }, JumpIf { condition: Relative(7), location: 3981 }, Jump { location: 3925 }, JumpIf { condition: Relative(8), location: 3971 }, Jump { location: 3927 }, JumpIf { condition: Relative(10), location: 3961 }, Jump { location: 3929 }, JumpIf { condition: Relative(11), location: 3951 }, Jump { location: 3931 }, JumpIf { condition: Relative(12), location: 3941 }, Jump { location: 3933 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32907) }, JumpIf { condition: Relative(17), location: 3937 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(19) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Relative(18) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(17), rhs: Direct(32864) }, Mov { destination: Relative(13), source: Relative(19) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(19) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(17), source: Relative(21) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(16), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(17), bit_size: U1 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(18), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 3988 }, JumpIf { condition: Relative(13), location: 4038 }, Jump { location: 3990 }, Load { destination: Relative(13), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(19), location: 3995 }, Call { location: 6601 }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, JumpIf { condition: Relative(20), location: 4004 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 6575 }, Mov { destination: Relative(20), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Store { destination_pointer: Relative(22), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(20) }, Call { location: 6575 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 6575 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 6575 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Jump { location: 4038 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 3890 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4072 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4076 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4286 }, Jump { location: 4079 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4087 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32901) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4258 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4284 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4288 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4307 }, Jump { location: 4327 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4315 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6608 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4327 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4076 }, Call { location: 188 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 4337 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 4343 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, Load { destination: Relative(1), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32848) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(1), source: Relative(2) }, Return, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4387 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 4390 }, Jump { location: 4505 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4398 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 4504 }, Jump { location: 4403 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4411 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6664 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4428 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 4436 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 4502 }, Jump { location: 4440 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6701 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 4456 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4462 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 4476 }, Jump { location: 4500 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4482 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 4488 }, Call { location: 6601 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 4500 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4387 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4387 }, Jump { location: 4505 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4531 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4535 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4749 }, Jump { location: 4538 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4546 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4721 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4747 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4751 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4770 }, Jump { location: 4790 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4778 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6608 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4790 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4535 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4818 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4822 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5038 }, Jump { location: 4825 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4833 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5010 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5036 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5040 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5064 }, Jump { location: 5086 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5072 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 5086 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4822 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5096 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 5102 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5124 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(1), location: 5129 }, Jump { location: 5127 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, BinaryIntOp { destination: Relative(1), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(1), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(1) }, Jump { location: 5124 }, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5183 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 5186 }, Jump { location: 5301 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5194 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 5300 }, Jump { location: 5199 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5207 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6664 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5224 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 5232 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 5298 }, Jump { location: 5236 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(12) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6882 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5252 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 5258 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 5272 }, Jump { location: 5296 }, Load { destination: Relative(8), source_pointer: Relative(15) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5278 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(7) }, JumpIf { condition: Relative(10), location: 5284 }, Call { location: 6601 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 5296 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5183 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5183 }, Jump { location: 5301 }, Return, Call { location: 188 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5312 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5316 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 5321 }, Jump { location: 5319 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5316 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5350 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5354 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 5359 }, Jump { location: 5357 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 5354 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5395 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32870) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32872) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32885) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5441 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 5451 }, Jump { location: 5444 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 5453 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Load { destination: Relative(10), source_pointer: Relative(19) }, JumpIf { condition: Relative(12), location: 5482 }, Jump { location: 5465 }, JumpIf { condition: Relative(13), location: 5479 }, Jump { location: 5467 }, JumpIf { condition: Relative(14), location: 5476 }, Jump { location: 5469 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, JumpIf { condition: Relative(17), location: 5473 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32908) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 5485 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(15) }, Mov { destination: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 5441 }, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5507 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32870) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32872) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32885) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5514 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 5518 }, Jump { location: 5517 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 5523 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 5559 }, Jump { location: 5636 }, JumpIf { condition: Relative(7), location: 5578 }, Jump { location: 5561 }, JumpIf { condition: Relative(8), location: 5575 }, Jump { location: 5563 }, JumpIf { condition: Relative(10), location: 5572 }, Jump { location: 5565 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, JumpIf { condition: Relative(17), location: 5569 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32908) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 5581 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6561 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(16) }, JumpIf { condition: Relative(19), location: 5602 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 6575 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 6575 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 6575 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(18) }, Jump { location: 5636 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 5514 }, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 5649 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5693 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 5703 }, Jump { location: 5696 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 5705 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(18) }, JumpIf { condition: Relative(12), location: 5726 }, Jump { location: 5717 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32895) }, JumpIf { condition: Relative(16), location: 5721 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(16), op: Mul, lhs: Relative(15), rhs: Direct(32845) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 5731 }, BinaryFieldOp { destination: Relative(16), op: Add, lhs: Relative(15), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 5731 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(13) }, Mov { destination: Relative(20), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 5693 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, JumpIf { condition: Relative(4), location: 5758 }, Jump { location: 5766 }, JumpIf { condition: Relative(4), location: 5761 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(1) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(5), rhs: Direct(32858) }, JumpIf { condition: Relative(1), location: 5765 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Jump { location: 5766 }, Return, Call { location: 188 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5774 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(7), source: Relative(11) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5792 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32883) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32901) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32902) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32884) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32897) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32878) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32903) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(10) }, Store { destination_pointer: Relative(12), source: Direct(32902) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32883) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32882) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32888) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32865) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32882) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32884) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32903) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5876 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5880 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(6), location: 6066 }, Jump { location: 5883 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5889 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 4047 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(13) }, Mov { destination: Relative(7), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5907 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5915 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5919 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(6), location: 6018 }, Jump { location: 5922 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4506 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(10) }, Mov { destination: Relative(6), source: Relative(11) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(3) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, Load { destination: Relative(1), source_pointer: Relative(8) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5982 }, Call { location: 938 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5986 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(1), location: 5990 }, Jump { location: 5989 }, Return, JumpIf { condition: Relative(1), location: 5992 }, Call { location: 6558 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(4) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6002 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6010 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(3), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(1)), HeapArray(HeapArray { pointer: Relative(10), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(1) }, Jump { location: 5986 }, JumpIf { condition: Relative(6), location: 6020 }, Call { location: 6558 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6030 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 3466 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(12), source: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 6049 }, Call { location: 938 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 6057 }, Call { location: 938 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(6)), MemoryAddress(Relative(12)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), HeapArray(HeapArray { pointer: Relative(17), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 5919 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(6), location: 6069 }, Jump { location: 6102 }, JumpIf { condition: Relative(6), location: 6071 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(6) }, Load { destination: Relative(9), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6087 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6095 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(10), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(9)), MemoryAddress(Relative(6)), HeapArray(HeapArray { pointer: Relative(14), size: 16 }), HeapArray(HeapArray { pointer: Relative(15), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 6102 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(6) }, Jump { location: 5880 }, Call { location: 188 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7046 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6123 }, Call { location: 938 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7164 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6141 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 6145 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 6148 }, Jump { location: 6298 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6156 }, Call { location: 938 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 6166 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 6166 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6170 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6175 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 6181 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 6225 }, Jump { location: 6220 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6223 }, Jump { location: 6237 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 6237 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 6231 }, Call { location: 6555 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 6237 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 6243 }, Jump { location: 6240 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 6145 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7200 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 6264 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 6575 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 6575 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 6575 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 6575 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6298 }, Return, Call { location: 188 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6309 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6317 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 6322 }, Jump { location: 6337 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6329 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6333 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 6339 }, Jump { location: 6336 }, Jump { location: 6337 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 6341 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 6367 }, Jump { location: 6395 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6373 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 7210 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 6390 }, Jump { location: 6388 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 6395 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 6395 }, Jump { location: 6393 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 6395 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 6333 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 6407 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 6413 }, Call { location: 6555 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6420 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 6515 }, Jump { location: 6426 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6434 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 6441 }, Call { location: 6552 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7316 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6466 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 4793 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 6480 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 6490 }, Jump { location: 6483 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(9) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Jump { location: 6515 }, JumpIf { condition: Relative(5), location: 6492 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 3269 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 6480 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6537 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7372 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 6579 }, Jump { location: 6581 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 6600 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 6598 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 6591 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 6600 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 188 }, BinaryFieldOp { destination: Relative(3), op: LessThan, lhs: Relative(1), rhs: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 6619 }, Jump { location: 6636 }, JumpIf { condition: Direct(32781), location: 6621 }, Jump { location: 6625 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 6635 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 6635 }, Jump { location: 6648 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 6648 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 6662 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 6662 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 6655 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 6673 }, Jump { location: 6677 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 6699 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 6698 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 6691 }, Jump { location: 6699 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32892) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32904) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32905) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6713 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 6746 }, Jump { location: 6716 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6721 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(8) }, JumpIf { condition: Relative(7), location: 6726 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(4) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Load { destination: Relative(13), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 6750 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(16) }, JumpIf { condition: Relative(7), location: 6755 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(3) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(8), location: 6816 }, Jump { location: 6760 }, JumpIf { condition: Relative(9), location: 6806 }, Jump { location: 6762 }, JumpIf { condition: Relative(10), location: 6796 }, Jump { location: 6764 }, JumpIf { condition: Relative(11), location: 6786 }, Jump { location: 6766 }, JumpIf { condition: Relative(12), location: 6776 }, Jump { location: 6768 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32907) }, JumpIf { condition: Relative(13), location: 6772 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, BinaryFieldOp { destination: Relative(13), op: Mul, lhs: Relative(14), rhs: Relative(15) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(13), rhs: Direct(32864) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(13), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(14), rhs: Direct(32840) }, Not { destination: Relative(14), source: Relative(13), bit_size: U1 }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(15), rhs: Direct(32840) }, Not { destination: Relative(15), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(15) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 6823 }, JumpIf { condition: Relative(2), location: 6825 }, Jump { location: 6857 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 6830 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(13) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 6855 }, Call { location: 6555 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 6857 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6713 }, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 6864 }, Jump { location: 6866 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 6881 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 6878 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 6871 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 6881 }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(2) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32899) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6892 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, JumpIf { condition: Relative(2), location: 6947 }, Jump { location: 6895 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(3), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 6900 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, JumpIf { condition: Relative(7), location: 6910 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(11) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(4), source: Direct(32773) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(4) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Store { destination_pointer: Relative(6), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Mov { destination: Relative(1), source: Relative(3) }, Return, Load { destination: Relative(11), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 6951 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, JumpIf { condition: Relative(7), location: 6958 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Load { destination: Relative(15), source_pointer: Relative(17) }, JumpIf { condition: Relative(10), location: 6977 }, Jump { location: 6963 }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32906) }, JumpIf { condition: Relative(11), location: 6967 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 6987 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(13) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6604 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(18) }, Mov { destination: Relative(2), source: Relative(11) }, Jump { location: 6987 }, JumpIf { condition: Relative(2), location: 6989 }, Jump { location: 7043 }, Load { destination: Relative(2), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 6994 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(12) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(14) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(20), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(20) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, Store { destination_pointer: Relative(18), source: Relative(19) }, Mov { destination: Direct(32771), source: Relative(2) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 6860 }, Mov { destination: Relative(2), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(1), source: Relative(2) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(2) }, JumpIf { condition: Relative(12), location: 7041 }, Call { location: 6555 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Jump { location: 7043 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(2) }, Jump { location: 6892 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7055 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 7061 }, Call { location: 6555 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7068 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 7163 }, Jump { location: 7074 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7082 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 7089 }, Call { location: 6552 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 7449 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(10), source: Relative(15) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(3) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 7114 }, Call { location: 938 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 7505 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7128 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(12) }, JumpIf { condition: Relative(5), location: 7138 }, Jump { location: 7131 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(9) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Jump { location: 7163 }, JumpIf { condition: Relative(5), location: 7140 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 6105 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7128 }, Return, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 7185 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7372 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Call { location: 188 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Call { location: 188 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7223 }, Call { location: 938 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 7164 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7241 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7245 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7248 }, Jump { location: 7313 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7254 }, Call { location: 938 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 7264 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 7264 }, Call { location: 6552 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7268 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 7273 }, Call { location: 6555 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 7279 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 7303 }, Jump { location: 7307 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 7310 }, Jump { location: 7306 }, Jump { location: 7307 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 7245 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 7313 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 7337 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7344 }, Jump { location: 7340 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7352 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6608 }, Mov { destination: Relative(9), source: Direct(32773) }, Mov { destination: Relative(10), source: Direct(32774) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(3) }, Jump { location: 7337 }, Call { location: 188 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7379 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 7801 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(12) }, Mov { destination: Relative(6), source: Relative(13) }, Mov { destination: Relative(8), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 7412 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 7416 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 7430 }, Jump { location: 7419 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 7831 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(10) }, Return, JumpIf { condition: Relative(5), location: 7432 }, Call { location: 6558 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7856 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 7416 }, Call { location: 188 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(5) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 7470 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 7477 }, Jump { location: 7473 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7485 }, Call { location: 938 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6608 }, Mov { destination: Relative(9), source: Direct(32773) }, Mov { destination: Relative(10), source: Direct(32774) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32839) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(3) }, Jump { location: 7470 }, Call { location: 188 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7530 }, Call { location: 938 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7534 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 7750 }, Jump { location: 7537 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 7545 }, Call { location: 938 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32866) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32902) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32896) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32882) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32873) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32884) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32888) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32903) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32860) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7722 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 7748 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 7752 }, Call { location: 6558 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 7776 }, Jump { location: 7798 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7784 }, Call { location: 938 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6608 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 7798 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7534 }, Call { location: 188 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(4), source: Relative(3) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32840) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32840) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(32837) }, Mov { destination: Relative(1), source: Relative(2) }, Mov { destination: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(32838) }, Return, Call { location: 188 }, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(5), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 7837 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(7) } }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 7913 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Return, Call { location: 188 }, Load { destination: Relative(6), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(7), location: 7862 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(8) } }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 7889 }, Jump { location: 7866 }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 7873 }, Call { location: 6558 }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(10), source: Direct(32773) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Store { destination_pointer: Relative(12), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(7), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 7884 }, Call { location: 6555 }, Store { destination_pointer: Relative(1), source: Relative(10) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7912 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 7913 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6860 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Direct(32842) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Jump { location: 7912 }, Return, Call { location: 188 }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7916 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 7944 }, Jump { location: 7919 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7926 }, Call { location: 938 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32847) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 7948 }, Jump { location: 7971 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 6860 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7971 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 7916 }]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -248,7 +248,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { @@ -260,7 +260,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_0.snap index 2f96738f582..120467190c2 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_0.snap @@ -233,7 +233,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32917 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32905), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32905 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 105 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32917 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Field, value: 1 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32845), bit_size: Field, value: 2 }, Const { destination: Direct(32846), bit_size: Field, value: 3 }, Const { destination: Direct(32847), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32848), bit_size: Integer(U32), value: 5 }, Const { destination: Direct(32849), bit_size: Field, value: 5 }, Const { destination: Direct(32850), bit_size: Field, value: 6 }, Const { destination: Direct(32851), bit_size: Field, value: 7 }, Const { destination: Direct(32852), bit_size: Field, value: 11 }, Const { destination: Direct(32853), bit_size: Field, value: 12 }, Const { destination: Direct(32854), bit_size: Field, value: 13 }, Const { destination: Direct(32855), bit_size: Field, value: 30 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 34 }, Const { destination: Direct(32858), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 49 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 50 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 51 }, Const { destination: Direct(32863), bit_size: Field, value: 55 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 58 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32866), bit_size: Field, value: 75 }, Const { destination: Direct(32867), bit_size: Field, value: 77 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 78 }, Const { destination: Direct(32869), bit_size: Field, value: 79 }, Const { destination: Direct(32870), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32871), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32872), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32873), bit_size: Integer(U8), value: 99 }, Const { destination: Direct(32874), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32875), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32876), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32877), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32878), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32879), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32880), bit_size: Integer(U8), value: 107 }, Const { destination: Direct(32881), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32882), bit_size: Field, value: 108 }, Const { destination: Direct(32883), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32884), bit_size: Field, value: 109 }, Const { destination: Direct(32885), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32886), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32887), bit_size: Field, value: 112 }, Const { destination: Direct(32888), bit_size: Field, value: 113 }, Const { destination: Direct(32889), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32890), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32891), bit_size: Field, value: 115 }, Const { destination: Direct(32892), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32893), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32894), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32895), bit_size: Field, value: 118 }, Const { destination: Direct(32896), bit_size: Integer(U8), value: 119 }, Const { destination: Direct(32897), bit_size: Integer(U8), value: 121 }, Const { destination: Direct(32898), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32899), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32900), bit_size: Field, value: 134 }, Const { destination: Direct(32901), bit_size: Field, value: 135 }, Const { destination: Direct(32902), bit_size: Field, value: 136 }, Const { destination: Direct(32903), bit_size: Field, value: 138 }, Const { destination: Direct(32904), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Return, Call { location: 1533 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 145 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 165 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(11), location: 170 }, Call { location: 1736 }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 177 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, JumpIf { condition: Relative(11), location: 192 }, Call { location: 1845 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 73 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(9), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(11) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32890) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32889) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32894) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32871) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32881) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32893) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32872) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32893) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32877) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32877) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32886) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32889) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32892) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32878) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32890) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32871) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32883) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32856) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32897) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32859) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 318 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32844) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 335 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32838) }, JumpIf { condition: Relative(8), location: 340 }, Call { location: 1996 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Direct(32838) }, Mov { destination: Relative(19), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(6), source: Relative(16) }, Mov { destination: Relative(8), source: Relative(17) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U1, lhs: Relative(6), rhs: Direct(32837) }, JumpIf { condition: Relative(4), location: 355 }, Call { location: 1999 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32847) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Load { destination: Relative(17), source_pointer: Relative(7) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 394 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(17) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 398 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 1520 }, Jump { location: 401 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(8), source_pointer: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 409 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(12), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 112 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(12) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(13) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32878) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32883) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32893) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32872) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32860) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32858) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32877) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32898) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32881) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32899) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32859) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 516 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(13) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(12) } }, Load { destination: Relative(8), source_pointer: Relative(14) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(17) }, Mov { destination: Relative(12), source: Relative(18) }, JumpIf { condition: Relative(10), location: 530 }, Call { location: 1845 }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(6), rhs: Relative(12) }, JumpIf { condition: Relative(4), location: 554 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(8) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(13) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(14) }, Call { location: 23 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(8), size: Relative(7) } }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32848) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 596 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(12) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(12) }, Mov { destination: Relative(20), source: Relative(4) }, Mov { destination: Relative(21), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 626 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, JumpIf { condition: Relative(10), location: 631 }, Call { location: 2002 }, Load { destination: Relative(7), source_pointer: Relative(9) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(7) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Direct(32842) }, Mov { destination: Relative(20), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(17) }, Mov { destination: Relative(10), source: Relative(18) }, JumpIf { condition: Relative(9), location: 645 }, Call { location: 1845 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(6), bit_size: Integer(U8), value: 120 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(9) }, Store { destination_pointer: Relative(13), source: Relative(4) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(15) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32873) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32874) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32885) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32896) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32870) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32894) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32871) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32881) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32875) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32899) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32858) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32872) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32893) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32898) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32877) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32886) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32892) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32899) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32859) }, BinaryFieldOp { destination: Relative(6), op: Equals, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(6), location: 748 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(13) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(16) }, Mov { destination: Direct(32772), source: Relative(15) }, Mov { destination: Direct(32773), source: Relative(17) }, Call { location: 23 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(16) }, Store { destination_pointer: Relative(15), source: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(13), size: Relative(9) } }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 754 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 791 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(6) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 799 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32890) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32875) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32892) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32879) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32877) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32856) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32898) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32875) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32885) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32892) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32889) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32897) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32899) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(16), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32890) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32889) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32893) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32873) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32871) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32883) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(4) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32892) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32889) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32897) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32890) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32897) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32894) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32871) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32893) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32858) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32898) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32880) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32885) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32864) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32876) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32879) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32875) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32881) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32874) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32857) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32899) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1039 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 1480 }, Jump { location: 1042 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(12), source: Direct(32898) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32864) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32893) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32877) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32858) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32896) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32878) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32857) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32864) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32862) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32861) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32899) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(11), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1139 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 1144 }, Call { location: 2005 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 1150 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(12), source: Relative(6) }, Store { destination_pointer: Relative(12), source: Direct(32868) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32876) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32886) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32893) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32879) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32890) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32874) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32856) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32898) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32885) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32892) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32889) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32870) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32880) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32875) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32897) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32899) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32859) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1229 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(5), location: 1430 }, Jump { location: 1232 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(8) }, Mov { destination: Relative(13), source: Relative(9) }, Mov { destination: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 2008 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32838) }, JumpIf { condition: Relative(5), location: 1244 }, Call { location: 2037 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Load { destination: Relative(10), source_pointer: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1308 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(10) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1312 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(10), location: 1399 }, Jump { location: 1315 }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1324 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(8) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1335 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(1) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(4) }, Mov { destination: Relative(20), source: Relative(10) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 2040 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(16) }, JumpIf { condition: Relative(12), location: 1351 }, Call { location: 2139 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(7) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(3), source_pointer: Relative(8) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(4) }, Mov { destination: Relative(20), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 2040 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(7), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 1378 }, Call { location: 2142 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2145 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2251 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2541 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 2985 }, Mov { destination: Direct(0), source: Relative(0) }, Return, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Relative(6) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(9) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(10) }, Jump { location: 1312 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Load { destination: Relative(6), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 1443 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(11) }, Mov { destination: Relative(20), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(17) }, Mov { destination: Relative(14), source: Relative(18) }, JumpIf { condition: Relative(12), location: 1477 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(11) }, Mov { destination: Relative(11), source: Relative(7) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(15) }, Mov { destination: Direct(32772), source: Relative(11) }, Mov { destination: Direct(32773), source: Relative(16) }, Call { location: 23 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(7), size: Relative(5) } }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(5) }, Jump { location: 1229 }, BinaryIntOp { destination: Relative(4), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(12) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1494 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1502 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(7), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(5)), MemoryAddress(Relative(4)), HeapArray(HeapArray { pointer: Relative(13), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(7), bit_size: Integer(U32), value: 18 }, Mov { destination: Relative(18), source: Direct(0) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(9) }, Mov { destination: Relative(21), source: Relative(10) }, Mov { destination: Relative(22), source: Relative(5) }, Mov { destination: Relative(23), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(4) }, Jump { location: 1039 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(14) }, Mov { destination: Relative(19), source: Relative(15) }, Mov { destination: Relative(20), source: Relative(16) }, Mov { destination: Relative(21), source: Relative(4) }, Mov { destination: Relative(22), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 398 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 1538 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4231 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1560 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1578 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 1582 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 1585 }, Jump { location: 1735 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 1593 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 1603 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 1603 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 1607 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 1612 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 1618 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(15) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Not { destination: Relative(21), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(18), rhs: Relative(21) }, JumpIf { condition: Relative(13), location: 1662 }, Jump { location: 1657 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 1660 }, Jump { location: 1674 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Jump { location: 1674 }, Store { destination_pointer: Relative(20), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 1668 }, Call { location: 4434 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 1674 }, Load { destination: Relative(12), source_pointer: Relative(20) }, JumpIf { condition: Relative(12), location: 1680 }, Jump { location: 1677 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 1582 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(9) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(19) }, Mov { destination: Relative(24), source: Relative(17) }, Mov { destination: Relative(25), source: Relative(4) }, Mov { destination: Relative(26), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 4440 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(19) }, Load { destination: Relative(7), source_pointer: Relative(17) }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 1701 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 4454 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(4) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 4454 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Store { destination_pointer: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(1), source: Relative(9) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 1735 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1752 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(12) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(3) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1770 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 1774 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, JumpIf { condition: Relative(3), location: 1777 }, Jump { location: 1842 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 1783 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 1793 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(3), rhs: Relative(5) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 1793 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1797 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(3), op: Div, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, BinaryIntOp { destination: Relative(11), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(11), location: 1802 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Relative(1) }, BinaryIntOp { destination: Relative(3), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 1808 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Load { destination: Relative(3), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Load { destination: Relative(10), source_pointer: Relative(15) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(3) }, JumpIf { condition: Relative(10), location: 1832 }, Jump { location: 1836 }, BinaryFieldOp { destination: Relative(3), op: Equals, lhs: Relative(12), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 1839 }, Jump { location: 1835 }, Jump { location: 1836 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(3) }, Jump { location: 1774 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 1842 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 1858 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4395 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1876 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 1880 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 1883 }, Jump { location: 1995 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 1891 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(5) }, JumpIf { condition: Relative(12), location: 1901 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 1901 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 1905 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 1910 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(13), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, JumpIf { condition: Relative(12), location: 1916 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Not { destination: Relative(8), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 1940 }, Jump { location: 1944 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 1947 }, Jump { location: 1943 }, Jump { location: 1944 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(7) }, Jump { location: 1880 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 1953 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Store { destination_pointer: Relative(9), source: Relative(14) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(6), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(4) }, JumpIf { condition: Relative(6), location: 1990 }, Call { location: 4480 }, Load { destination: Relative(4), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 1995 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Direct(32842) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8591465503772373437 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2058 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 2063 }, Jump { location: 2078 }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2070 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 2074 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(8), location: 2080 }, Jump { location: 2077 }, Jump { location: 2078 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Return, JumpIf { condition: Relative(8), location: 2082 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 2108 }, Jump { location: 2136 }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2114 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(13) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(15) }, Mov { destination: Relative(10), source: Relative(16) }, JumpIf { condition: Relative(8), location: 2131 }, Jump { location: 2129 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 2136 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Relative(10) }, JumpIf { condition: Relative(8), location: 2136 }, Jump { location: 2134 }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Jump { location: 2136 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 2074 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2181 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32849) }, Mov { destination: Relative(12), source: Direct(32852) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32845) }, Mov { destination: Relative(12), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32852) }, Mov { destination: Relative(12), source: Direct(32849) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(4) }, Mov { destination: Relative(11), source: Direct(32903) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 4483 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(1) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2230 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, JumpIf { condition: Relative(4), location: 2235 }, Call { location: 4621 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Direct(32844) }, Mov { destination: Relative(12), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(9) }, Mov { destination: Relative(4), source: Relative(10) }, BinaryIntOp { destination: Relative(1), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(1), location: 2250 }, Call { location: 4624 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(1) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 2320 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(4) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(9) }, Mov { destination: Relative(6), source: Relative(10) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(1) }, Mov { destination: Relative(11), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 2346 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2357 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(32844) }, Mov { destination: Relative(14), source: Direct(32900) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2375 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Relative(2) }, Mov { destination: Relative(15), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(14) }, Load { destination: Relative(1), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 2401 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2412 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32901) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(11), source_pointer: Relative(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, Mov { destination: Relative(12), source: Relative(17) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5786 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2448 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2459 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32902) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5855 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(16) }, JumpIf { condition: Relative(4), location: 2492 }, Call { location: 6169 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(11) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2513 }, Call { location: 6172 }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Direct(32845) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32846) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32849) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32851) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32852) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32854) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6175 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, JumpIf { condition: Relative(4), location: 2540 }, Call { location: 6217 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32845) }, Mov { destination: Relative(10), source: Direct(32846) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32849) }, Mov { destination: Relative(10), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32852) }, Mov { destination: Relative(10), source: Direct(32854) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32882) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6220 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32884) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6333 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 2628 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(13) }, Load { destination: Relative(7), source_pointer: Relative(10) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 2654 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2665 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(32838) }, Mov { destination: Relative(16), source: Direct(32844) }, Mov { destination: Relative(17), source: Direct(32887) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(10), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 2683 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(4) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 4910 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(15) }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 2709 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Load { destination: Relative(7), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(7) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2720 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32888) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4942 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 2738 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(5) }, Const { destination: Relative(5), bit_size: Field, value: 15 }, Const { destination: Relative(14), bit_size: Field, value: 33 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(10) }, Mov { destination: Relative(19), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Const { destination: Relative(15), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32873) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32873) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32889) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32871) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32892) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32879) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32885) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32886) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32876) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32864) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32856) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32898) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32880) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32875) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32897) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32890) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32899) }, JumpIf { condition: Relative(14), location: 2872 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, Mov { destination: Relative(18), source: Relative(17) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Store { destination_pointer: Relative(18), source: Direct(32842) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(18) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(19) }, Trap { revert_data: HeapVector { pointer: Relative(17), size: Relative(15) } }, Const { destination: Relative(10), bit_size: Field, value: 35 }, Const { destination: Relative(14), bit_size: Field, value: 65 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(5) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6137 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(5), source: Relative(17) }, JumpIf { condition: Relative(5), location: 2895 }, Call { location: 6172 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32891) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6474 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(15) }, Mov { destination: Relative(5), source: Relative(16) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(3) }, Call { location: 5786 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(15) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, Not { destination: Relative(4), source: Relative(4), bit_size: U1 }, JumpIf { condition: Relative(4), location: 2931 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(2) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 2942 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32838) }, Mov { destination: Relative(17), source: Direct(32844) }, Mov { destination: Relative(18), source: Direct(32895) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 5855 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(1) }, Const { destination: Relative(1), bit_size: Field, value: 70 }, Const { destination: Relative(4), bit_size: Field, value: 66 }, Const { destination: Relative(10), bit_size: Field, value: 130 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(1) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(10) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 6175 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(1), source: Relative(16) }, JumpIf { condition: Relative(1), location: 2984 }, Call { location: 6217 }, Return, Call { location: 1533 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(4), bit_size: Field, value: 42 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 6 }, Mov { destination: Relative(6), source: Direct(0) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(3) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Direct(32853) }, Mov { destination: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3034 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, JumpIf { condition: Relative(7), location: 3040 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3047 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(5) }, Mov { destination: Relative(15), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, JumpIf { condition: Relative(7), location: 3062 }, Jump { location: 3070 }, JumpIf { condition: Relative(7), location: 3065 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryFieldOp { destination: Relative(5), op: Equals, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 3069 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Jump { location: 3070 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, Mov { destination: Relative(5), source: Direct(0) }, Mov { destination: Relative(6), source: Relative(2) }, Mov { destination: Relative(7), source: Relative(3) }, Mov { destination: Relative(8), source: Relative(1) }, Mov { destination: Relative(9), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 3087 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(4), location: 3093 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(2) }, Mov { destination: Relative(10), source: Relative(3) }, Mov { destination: Relative(11), source: Relative(1) }, Mov { destination: Relative(12), source: Direct(32853) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3110 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 3116 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3122 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32843) }, Mov { destination: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3142 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(5), location: 3149 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(9) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3166 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(9), location: 3172 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3178 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32843) }, Mov { destination: Relative(17), source: Direct(32845) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Field, value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32846) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Direct(32849) }, Mov { destination: Relative(17), source: Direct(32850) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 3219 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 3225 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(2) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(1) }, Mov { destination: Relative(18), source: Direct(32846) }, Mov { destination: Relative(19), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 3243 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 3249 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(3) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 1848 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3266 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, JumpIf { condition: Relative(12), location: 3272 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32880) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32893) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32890) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32877) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32885) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32892) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32877) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32889) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32896) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32879) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32874) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32892) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32878) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32857) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32862) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(12), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(5), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3359 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 16 }, Mov { destination: Relative(16), source: Direct(0) }, Mov { destination: Relative(17), source: Relative(2) }, Mov { destination: Relative(18), source: Relative(3) }, Mov { destination: Relative(19), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 2008 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 3377 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Direct(32838) }, JumpIf { condition: Relative(16), location: 3383 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 3390 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(5) }, Mov { destination: Relative(23), source: Relative(4) }, Mov { destination: Relative(24), source: Direct(32838) }, Mov { destination: Relative(25), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(20) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(16), source: Relative(22) }, Mov { destination: Relative(19), source: Relative(23) }, JumpIf { condition: Relative(16), location: 3518 }, Jump { location: 3405 }, Const { destination: Relative(4), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32886) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32894) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32871) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32893) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32876) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32886) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32897) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32856) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(4), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(5), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32898) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32880) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32874) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32890) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32889) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32879) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32858) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32881) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32875) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32885) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32877) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32892) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32878) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32857) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32864) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32860) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(4) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32899) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(4), size: 19 }), HeapArray(HeapArray { pointer: Relative(7), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 3544 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3527 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Direct(32851) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(7), source: Relative(12) }, Mov { destination: Relative(9), source: Relative(13) }, JumpIf { condition: Relative(7), location: 3543 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(4) } }, Jump { location: 3544 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3553 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 3571 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32880) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32897) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32856) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32856) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32898) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32894) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32871) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32881) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32893) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32875) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32899) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(13) }, Store { destination_pointer: Relative(15), source: Direct(32898) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32880) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32885) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32864) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32876) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32879) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32875) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32881) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32874) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32857) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32899) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3655 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3659 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 4192 }, Jump { location: 3662 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3668 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 4627 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(16) }, Mov { destination: Relative(10), source: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 3686 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(12) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 3694 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3698 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4144 }, Jump { location: 3701 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 5203 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(8), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32886) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32885) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32874) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32881) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32856) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32898) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32894) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32871) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32881) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32893) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32875) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32899) }, Load { destination: Relative(5), source_pointer: Relative(11) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3761 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 3765 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4116 }, Jump { location: 3768 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 3777 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32866) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6474 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6220 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(32869) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 6333 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, Mov { destination: Relative(12), source: Relative(1) }, Mov { destination: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(4) }, Call { location: 4483 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32839) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32842) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(2) }, Mov { destination: Relative(12), source: Relative(3) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Direct(32843) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Direct(32846) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Direct(32846) }, Mov { destination: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(5) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(4) }, Mov { destination: Relative(14), source: Direct(32843) }, Mov { destination: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 3939 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 3947 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 3952 }, Jump { location: 3967 }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 3959 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 3963 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 3972 }, Jump { location: 3966 }, Jump { location: 3967 }, Load { destination: Relative(1), source_pointer: Relative(4) }, JumpIf { condition: Relative(1), location: 3971 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, JumpIf { condition: Relative(8), location: 3974 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32847) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32844) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4000 }, Jump { location: 4113 }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4006 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 4020 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(1) }, Mov { destination: Relative(19), source: Relative(5) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(11) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 6741 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(14), source: Relative(18) }, Load { destination: Relative(16), source_pointer: Relative(5) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 4038 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(16) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 4042 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, JumpIf { condition: Relative(10), location: 4045 }, Jump { location: 4102 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 4053 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(8) }, JumpIf { condition: Relative(17), location: 4053 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 4057 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(10), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 4062 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, JumpIf { condition: Relative(15), location: 4068 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(10), rhs: Direct(32847) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(10), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(10) }, JumpIf { condition: Relative(15), location: 4092 }, Jump { location: 4096 }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(17), rhs: Relative(11) }, JumpIf { condition: Relative(10), location: 4099 }, Jump { location: 4095 }, Jump { location: 4096 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(10) }, Jump { location: 4042 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Jump { location: 4102 }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(13) }, JumpIf { condition: Relative(8), location: 4108 }, Jump { location: 4106 }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 4113 }, Jump { location: 4111 }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 3963 }, JumpIf { condition: Relative(5), location: 4118 }, Call { location: 4437 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(4) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(7) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4128 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(11) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4136 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(7), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 3765 }, JumpIf { condition: Relative(9), location: 4146 }, Call { location: 4437 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(4) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 4156 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, Mov { destination: Relative(20), source: Relative(7) }, Mov { destination: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 1739 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(12), source: Relative(18) }, Mov { destination: Relative(15), source: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 4175 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 4183 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(9)), MemoryAddress(Relative(15)), HeapArray(HeapArray { pointer: Relative(19), size: 16 }), HeapArray(HeapArray { pointer: Relative(20), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(9) }, Jump { location: 3698 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 4195 }, Jump { location: 4228 }, JumpIf { condition: Relative(9), location: 4197 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(16) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 4213 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 4221 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(13), size: 16 }), MemoryAddress(Direct(32844)), MemoryAddress(Relative(12)), MemoryAddress(Relative(9)), HeapArray(HeapArray { pointer: Relative(17), size: 16 }), HeapArray(HeapArray { pointer: Relative(18), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 4228 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(9) }, Jump { location: 3659 }, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4240 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 4246 }, Call { location: 4434 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4253 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 4394 }, Jump { location: 4259 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4267 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 4274 }, Call { location: 4431 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4294 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 4366 }, Jump { location: 4297 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 4317 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(8) }, Mov { destination: Relative(17), source: Relative(9) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(11), source: Relative(16) }, Mov { destination: Relative(13), source: Relative(17) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4331 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(11) }, JumpIf { condition: Relative(8), location: 4341 }, Jump { location: 4334 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 4394 }, JumpIf { condition: Relative(8), location: 4343 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(5) }, Mov { destination: Relative(17), source: Relative(6) }, Mov { destination: Relative(18), source: Relative(9) }, Mov { destination: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(8) }, Jump { location: 4331 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4374 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4294 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 4416 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6833 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(7), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Direct(32841) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Direct(32837) }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 4458 }, Jump { location: 4460 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 4479 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 4477 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 4470 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 4479 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4492 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32888) }, BinaryFieldOp { destination: Relative(11), op: Equals, lhs: Relative(4), rhs: Direct(32900) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32901) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4501 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 4505 }, Jump { location: 4504 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 4510 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(13), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 4534 }, Jump { location: 4618 }, JumpIf { condition: Relative(7), location: 4561 }, Jump { location: 4536 }, BinaryFieldOp { destination: Relative(17), op: LessThan, lhs: Relative(16), rhs: Relative(18) }, JumpIf { condition: Relative(8), location: 4559 }, Jump { location: 4539 }, JumpIf { condition: Relative(10), location: 4557 }, Jump { location: 4541 }, JumpIf { condition: Relative(11), location: 4555 }, Jump { location: 4543 }, JumpIf { condition: Relative(12), location: 4553 }, Jump { location: 4545 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32903) }, JumpIf { condition: Relative(17), location: 4549 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(19) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Relative(18) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(17), rhs: Direct(32863) }, Mov { destination: Relative(13), source: Relative(19) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(16), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(17), bit_size: U1 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(18), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(13), source: Relative(17) }, Jump { location: 4568 }, JumpIf { condition: Relative(13), location: 4618 }, Jump { location: 4570 }, Load { destination: Relative(13), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(17), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(19), location: 4575 }, Call { location: 4480 }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(19), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Load { destination: Relative(13), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, JumpIf { condition: Relative(20), location: 4584 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 4454 }, Mov { destination: Relative(20), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Store { destination_pointer: Relative(22), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(20) }, Call { location: 4454 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(16) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 4454 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 4454 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, Store { destination_pointer: Relative(18), source: Direct(32841) }, Store { destination_pointer: Relative(1), source: Relative(13) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(17) }, Jump { location: 4618 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 4501 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 4652 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 4656 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 4866 }, Jump { location: 4659 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 4667 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32880) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32897) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 4838 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 4864 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 4868 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 4887 }, Jump { location: 4907 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 4895 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 4907 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 4656 }, Call { location: 1533 }, Load { destination: Relative(3), source_pointer: Relative(2) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(5), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(3) }, Not { destination: Relative(5), source: Relative(5), bit_size: U1 }, JumpIf { condition: Relative(5), location: 4917 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 4923 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(5) } }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, Load { destination: Relative(1), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32847) }, Load { destination: Relative(3), source_pointer: Relative(5) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32848) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(1), source: Relative(2) }, Return, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 4967 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 4970 }, Jump { location: 5202 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4978 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 5201 }, Jump { location: 4983 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 4991 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6982 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5008 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 5016 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 5199 }, Jump { location: 5020 }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32855) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32887) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32888) }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(4), rhs: Direct(32900) }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32901) }, Mov { destination: Relative(7), source: Relative(11) }, Jump { location: 5031 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 5116 }, Jump { location: 5034 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(10), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 5039 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, JumpIf { condition: Relative(9), location: 5044 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(12) }, Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 5070 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 5076 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(10) }, JumpIf { condition: Relative(7), location: 5090 }, Jump { location: 5114 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5096 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(10) }, JumpIf { condition: Relative(9), location: 5102 }, Call { location: 4480 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 5114 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4967 }, Load { destination: Relative(18), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 5120 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(7) }, Load { destination: Relative(19), source_pointer: Relative(21) }, JumpIf { condition: Relative(9), location: 5125 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Load { destination: Relative(20), source_pointer: Relative(22) }, JumpIf { condition: Relative(10), location: 5155 }, Jump { location: 5130 }, BinaryFieldOp { destination: Relative(18), op: LessThan, lhs: Relative(19), rhs: Relative(20) }, JumpIf { condition: Relative(13), location: 5153 }, Jump { location: 5133 }, JumpIf { condition: Relative(14), location: 5151 }, Jump { location: 5135 }, JumpIf { condition: Relative(15), location: 5149 }, Jump { location: 5137 }, JumpIf { condition: Relative(16), location: 5147 }, Jump { location: 5139 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(4), rhs: Direct(32903) }, JumpIf { condition: Relative(18), location: 5143 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(19), rhs: Relative(20) }, BinaryFieldOp { destination: Relative(19), op: Equals, lhs: Relative(18), rhs: Direct(32863) }, Mov { destination: Relative(17), source: Relative(19) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(19), rhs: Direct(32840) }, Not { destination: Relative(19), source: Relative(18), bit_size: U1 }, BinaryFieldOp { destination: Relative(18), op: Equals, lhs: Relative(20), rhs: Direct(32840) }, Not { destination: Relative(20), source: Relative(18), bit_size: U1 }, BinaryIntOp { destination: Relative(18), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Relative(17), source: Relative(18) }, Jump { location: 5162 }, JumpIf { condition: Relative(17), location: 5164 }, Jump { location: 5196 }, Load { destination: Relative(17), source_pointer: Relative(1) }, Load { destination: Relative(18), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(18), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 5169 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(7) }, Load { destination: Relative(20), source_pointer: Relative(22) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(18) }, Store { destination_pointer: Relative(23), source: Relative(20) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(7) }, Store { destination_pointer: Relative(22), source: Relative(19) }, Store { destination_pointer: Relative(1), source: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: LessThanEquals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, JumpIf { condition: Relative(19), location: 5194 }, Call { location: 4434 }, Store { destination_pointer: Relative(8), source: Relative(17) }, Jump { location: 5196 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(17) }, Jump { location: 5031 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 4967 }, Jump { location: 5202 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5228 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5232 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5446 }, Jump { location: 5235 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5243 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5418 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5444 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5448 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(12) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5467 }, Jump { location: 5487 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5475 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Jump { location: 5487 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 5232 }, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(2) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 5515 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 5519 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 5735 }, Jump { location: 5522 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5530 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32865) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32874) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32878) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32871) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32894) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32876) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32883) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32858) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32872) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32893) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32877) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32886) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32856) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32898) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32892) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32889) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32879) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32890) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32870) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32881) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32875) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32885) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32899) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32859) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 5707 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(6), location: 5733 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(10) }, Mov { destination: Relative(10), source: Relative(9) }, IndirectConst { destination_pointer: Relative(10), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(11) }, Mov { destination: Direct(32772), source: Relative(10) }, Mov { destination: Direct(32773), source: Relative(12) }, Call { location: 23 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(10), source: Direct(32844) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(3) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Mov { destination: Relative(1), source: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 5737 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, Load { destination: Relative(8), source_pointer: Relative(10) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Not { destination: Relative(9), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(9), rhs: Relative(8) }, JumpIf { condition: Relative(5), location: 5761 }, Jump { location: 5783 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5769 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(13), source: Direct(32773) }, Mov { destination: Relative(14), source: Direct(32774) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Store { destination_pointer: Relative(6), source: Relative(9) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Jump { location: 5783 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 5519 }, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 5793 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Equals, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 5799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(6) } }, Mov { destination: Relative(1), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Mov { destination: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32840) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(1) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 5821 }, BinaryIntOp { destination: Relative(1), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(1), location: 5826 }, Jump { location: 5824 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, BinaryIntOp { destination: Relative(1), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(1) }, Load { destination: Relative(5), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(9), source: Direct(32773) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(1), source: Direct(32773) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(1) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(1) }, Jump { location: 5821 }, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(3) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 5880 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 5883 }, Jump { location: 6136 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5891 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 6135 }, Jump { location: 5896 }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 5904 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Sub, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6982 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Load { destination: Relative(12), source_pointer: Relative(13) }, Load { destination: Relative(6), source_pointer: Relative(10) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 5921 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Store { destination_pointer: Relative(3), source: Relative(10) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 5929 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, JumpIf { condition: Relative(8), location: 6133 }, Jump { location: 5933 }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32895) }, Mov { destination: Relative(7), source: Relative(11) }, Jump { location: 5941 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, JumpIf { condition: Relative(14), location: 6049 }, Jump { location: 5944 }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(13), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 5949 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, JumpIf { condition: Relative(9), location: 5959 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, Store { destination_pointer: Relative(21), source: Relative(9) }, Mov { destination: Direct(32771), source: Relative(19) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, Store { destination_pointer: Relative(9), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(8), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(10) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, Store { destination_pointer: Relative(10), source: Relative(16) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 6003 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 6009 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(15), source: Direct(32773) }, Mov { destination: Relative(16), source: Direct(32774) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Store { destination_pointer: Relative(3), source: Relative(15) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(13) }, JumpIf { condition: Relative(7), location: 6023 }, Jump { location: 6047 }, Load { destination: Relative(7), source_pointer: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 6029 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(13) }, JumpIf { condition: Relative(9), location: 6035 }, Call { location: 4480 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(10), source: Direct(32773) }, Mov { destination: Relative(12), source: Direct(32774) }, Store { destination_pointer: Relative(12), source: Relative(11) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(7) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Store { destination_pointer: Relative(3), source: Relative(10) }, Jump { location: 6047 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5880 }, Load { destination: Relative(15), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 6053 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, JumpIf { condition: Relative(9), location: 6059 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(10) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryFieldOp { destination: Relative(15), op: LessThan, lhs: Relative(17), rhs: Relative(18) }, JumpIf { condition: Relative(13), location: 6071 }, Jump { location: 6065 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32902) }, JumpIf { condition: Relative(17), location: 6069 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6073 }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6073 }, JumpIf { condition: Relative(14), location: 6075 }, Jump { location: 6130 }, Load { destination: Relative(14), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, JumpIf { condition: Relative(17), location: 6080 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(17), source: Direct(32773) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 7019 }, Mov { destination: Relative(14), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Store { destination_pointer: Relative(1), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 6128 }, Call { location: 4434 }, Store { destination_pointer: Relative(8), source: Relative(14) }, Jump { location: 6130 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(14) }, Jump { location: 5941 }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 5880 }, Jump { location: 6136 }, Return, Call { location: 1533 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6147 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6151 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6156 }, Jump { location: 6154 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(6), rhs: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6151 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Direct(32841) }, Load { destination: Relative(5), source_pointer: Relative(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(5) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6185 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6189 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(5), location: 6194 }, Jump { location: 6192 }, Load { destination: Relative(1), source_pointer: Relative(4) }, Return, Load { destination: Relative(5), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(6) }, Load { destination: Relative(7), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(12) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(10) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(9), rhs: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Mul, bit_size: U1, lhs: Relative(5), rhs: Relative(6) }, Store { destination_pointer: Relative(4), source: Relative(7) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6189 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6230 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32867) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(4), rhs: Direct(32882) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6276 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 6286 }, Jump { location: 6279 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 6288 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(10) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Load { destination: Relative(10), source_pointer: Relative(19) }, JumpIf { condition: Relative(12), location: 6317 }, Jump { location: 6300 }, JumpIf { condition: Relative(13), location: 6314 }, Jump { location: 6302 }, JumpIf { condition: Relative(14), location: 6311 }, Jump { location: 6304 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32884) }, JumpIf { condition: Relative(17), location: 6308 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(18) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32904) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(15), source: Relative(17) }, Jump { location: 6320 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, Mov { destination: Relative(17), source: Direct(0) }, Mov { destination: Relative(18), source: Relative(7) }, Mov { destination: Relative(19), source: Relative(8) }, Mov { destination: Relative(20), source: Relative(6) }, Mov { destination: Relative(21), source: Relative(15) }, Mov { destination: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 6276 }, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 6342 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, BinaryFieldOp { destination: Relative(7), op: Equals, lhs: Relative(4), rhs: Direct(32867) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(4), rhs: Direct(32869) }, BinaryFieldOp { destination: Relative(10), op: Equals, lhs: Relative(4), rhs: Direct(32882) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6349 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(9), location: 6353 }, Jump { location: 6352 }, Return, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(11), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 6358 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32847) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(12) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(17) }, Not { destination: Relative(20), source: Relative(17), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(12) }, JumpIf { condition: Relative(17), location: 6394 }, Jump { location: 6471 }, JumpIf { condition: Relative(7), location: 6413 }, Jump { location: 6396 }, JumpIf { condition: Relative(8), location: 6410 }, Jump { location: 6398 }, JumpIf { condition: Relative(10), location: 6407 }, Jump { location: 6400 }, BinaryFieldOp { destination: Relative(17), op: Equals, lhs: Relative(4), rhs: Direct(32884) }, JumpIf { condition: Relative(17), location: 6404 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(20) } }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32849) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32846) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32904) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, BinaryFieldOp { destination: Relative(17), op: Mul, lhs: Relative(16), rhs: Direct(32845) }, Mov { destination: Relative(12), source: Relative(17) }, Jump { location: 6416 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(15) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 4440 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(15), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Load { destination: Relative(18), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(16) }, JumpIf { condition: Relative(19), location: 6437 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 4454 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 4454 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 4454 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Store { destination_pointer: Relative(17), source: Relative(14) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 4454 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Store { destination_pointer: Relative(14), source: Relative(15) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(18) }, Jump { location: 6471 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(9) }, Jump { location: 6349 }, Call { location: 1533 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6484 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(6) }, Mov { destination: Relative(15), source: Relative(7) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 5490 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(11), source: Relative(15) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(4), rhs: Direct(32866) }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 6528 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, JumpIf { condition: Relative(10), location: 6538 }, Jump { location: 6531 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(5) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Return, JumpIf { condition: Relative(10), location: 6540 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(10) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(10), source_pointer: Relative(18) }, JumpIf { condition: Relative(12), location: 6561 }, Jump { location: 6552 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(4), rhs: Direct(32891) }, JumpIf { condition: Relative(16), location: 6556 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(17) } }, BinaryFieldOp { destination: Relative(16), op: Mul, lhs: Relative(15), rhs: Direct(32845) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6566 }, BinaryFieldOp { destination: Relative(16), op: Add, lhs: Relative(15), rhs: Direct(32843) }, BinaryFieldOp { destination: Relative(15), op: Mul, lhs: Relative(10), rhs: Direct(32845) }, Mov { destination: Relative(13), source: Relative(16) }, Mov { destination: Relative(14), source: Relative(15) }, Jump { location: 6566 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 15 }, Mov { destination: Relative(15), source: Direct(0) }, Mov { destination: Relative(16), source: Relative(7) }, Mov { destination: Relative(17), source: Relative(8) }, Mov { destination: Relative(18), source: Relative(6) }, Mov { destination: Relative(19), source: Relative(13) }, Mov { destination: Relative(20), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 1542 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(10) }, Jump { location: 6528 }, Call { location: 1533 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 7041 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 6597 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6741 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(10), source: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6615 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(9) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 6619 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 6622 }, Jump { location: 6740 }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 6630 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 6640 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 6640 }, Call { location: 4431 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6644 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 6649 }, Call { location: 4434 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, JumpIf { condition: Relative(13), location: 6655 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32847) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 6682 }, Jump { location: 6677 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 6680 }, Jump { location: 6694 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Jump { location: 6694 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 6688 }, Call { location: 4434 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 6694 }, Load { destination: Relative(12), source_pointer: Relative(9) }, JumpIf { condition: Relative(12), location: 6700 }, Jump { location: 6697 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(8) }, Jump { location: 6619 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(9), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 6706 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 4454 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 4454 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 4454 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 4454 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(9) }, Jump { location: 6740 }, Return, Call { location: 1533 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 1 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 6762 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Direct(32842) }, Mov { destination: Relative(10), source: Relative(5) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 6833 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(9) }, Cast { destination: Relative(7), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(5), source: Relative(7), bit_size: Field }, Cast { destination: Relative(4), source: Relative(5), bit_size: Integer(U32) }, Mov { destination: Relative(1), source: Relative(4) }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 6788 }, Jump { location: 6805 }, JumpIf { condition: Direct(32781), location: 6790 }, Jump { location: 6794 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 6804 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 6804 }, Jump { location: 6817 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 6817 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 6831 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 6831 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 6824 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(4) }, Not { destination: Relative(6), source: Relative(6), bit_size: U1 }, JumpIf { condition: Relative(6), location: 6840 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Cast { destination: Relative(4), source: Relative(1), bit_size: Field }, Const { destination: Relative(6), bit_size: Field, value: 18446744073709551616 }, BinaryFieldOp { destination: Relative(7), op: Mul, lhs: Relative(4), rhs: Relative(6) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(8), source: Relative(6) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32840) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 6887 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(9) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 6891 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(1) }, JumpIf { condition: Relative(5), location: 6918 }, Jump { location: 6894 }, Load { destination: Relative(1), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U1, lhs: Relative(1), rhs: Direct(32837) }, JumpIf { condition: Relative(2), location: 6899 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(3) } }, Const { destination: Relative(1), bit_size: Integer(U32), value: 9 }, Mov { destination: Relative(9), source: Direct(0) }, Mov { destination: Relative(10), source: Relative(7) }, Mov { destination: Relative(11), source: Relative(4) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(1) }, Call { location: 7488 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(1) }, Store { destination_pointer: Relative(4), source: Relative(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Store { destination_pointer: Relative(8), source: Direct(32841) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Load { destination: Relative(1), source_pointer: Relative(3) }, Return, JumpIf { condition: Relative(5), location: 6920 }, Call { location: 4437 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(3) }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(10), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U1, lhs: Relative(10), rhs: Direct(32837) }, JumpIf { condition: Relative(11), location: 6930 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(12) } }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 6956 }, Jump { location: 6933 }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 6940 }, Call { location: 4437 }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(13), source: Direct(32773) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Store { destination_pointer: Relative(15), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(9), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, JumpIf { condition: Relative(9), location: 6951 }, Call { location: 4434 }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Relative(5) }, Store { destination_pointer: Relative(8), source: Relative(12) }, Jump { location: 6979 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(7) }, Mov { destination: Relative(12), source: Relative(4) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 7488 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(9), source_pointer: Relative(7) }, Load { destination: Relative(10), source_pointer: Relative(4) }, Load { destination: Relative(11), source_pointer: Relative(8) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 7019 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, Store { destination_pointer: Relative(13), source: Relative(5) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(4), source: Relative(10) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Store { destination_pointer: Relative(8), source: Relative(11) }, Jump { location: 6979 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(5) }, Jump { location: 6891 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 6991 }, Jump { location: 6995 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 7017 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 7016 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 7009 }, Jump { location: 7017 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 7023 }, Jump { location: 7025 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 7040 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 7037 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 7030 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 7040 }, Return, Call { location: 1533 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7050 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 7056 }, Call { location: 4434 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 7063 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 7487 }, Jump { location: 7069 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 7077 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32844) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 7084 }, Call { location: 4431 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7104 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 7459 }, Jump { location: 7107 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7127 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7153 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7157 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 7408 }, Jump { location: 7160 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7168 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32894) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32871) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32874) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32874) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32878) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32871) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32894) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32898) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32876) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32899) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32883) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32872) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32893) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32877) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32886) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32898) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32892) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32889) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32879) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32890) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32870) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32881) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32875) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32885) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32899) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 7345 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 7371 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32844) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 7373 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 7383 }, Jump { location: 7376 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 7487 }, JumpIf { condition: Relative(10), location: 7385 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 6579 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 7373 }, JumpIf { condition: Relative(11), location: 7410 }, Call { location: 4437 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32847) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 7434 }, Jump { location: 7456 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 7442 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 6777 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 7456 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 7157 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 7467 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 6777 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 7104 }, Return, Call { location: 1533 }, Mov { destination: Relative(5), source: Direct(32838) }, Jump { location: 7491 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 7519 }, Jump { location: 7494 }, Load { destination: Relative(5), source_pointer: Relative(2) }, Load { destination: Relative(6), source_pointer: Relative(5) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 7501 }, Call { location: 1539 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(8), size: Relative(9) }, output: HeapArray { pointer: Relative(10), size: 4 }, len: Direct(32847) }), Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Store { destination_pointer: Relative(1), source: Relative(5) }, Store { destination_pointer: Relative(2), source: Relative(6) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Return, Load { destination: Relative(6), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(7), location: 7523 }, Jump { location: 7546 }, Load { destination: Relative(6), source_pointer: Relative(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(5) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(8), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryFieldOp { destination: Relative(10), op: Add, lhs: Relative(7), rhs: Relative(9) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 7019 }, Mov { destination: Relative(11), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Store { destination_pointer: Relative(1), source: Relative(8) }, Store { destination_pointer: Relative(2), source: Relative(11) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Jump { location: 7546 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Mov { destination: Relative(5), source: Relative(6) }, Jump { location: 7491 }]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -248,7 +248,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { @@ -260,7 +260,7 @@ expression: artifact "path": "std/field/mod.nr" }, "19": { - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n", "path": "std/hash/mod.nr" }, "22": { diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index 086133fd095..8e35fba2acd 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/uhashmap/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -229,7 +229,7 @@ expression: artifact "unconstrained func 0", "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32882 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 12 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32870), size_address: Relative(2), offset_address: Relative(3) }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32870 }, Const { destination: Relative(3), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 13 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(1) }, Mov { destination: Direct(32772), source: Relative(4) }, Mov { destination: Direct(32773), source: Relative(3) }, Call { location: 23 }, Mov { destination: Relative(1), source: Relative(2) }, Call { location: 34 }, Call { location: 70 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 32882 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Stop { return_data: HeapVector { pointer: Relative(1), size: Relative(2) } }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, Mov { destination: Direct(32776), source: Direct(32771) }, Mov { destination: Direct(32777), source: Direct(32772) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32776), rhs: Direct(32775) }, JumpIf { condition: Direct(32778), location: 33 }, Load { destination: Direct(32774), source_pointer: Direct(32776) }, Store { destination_pointer: Direct(32777), source: Direct(32774) }, BinaryIntOp { destination: Direct(32776), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Jump { location: 26 }, Return, Const { destination: Direct(32835), bit_size: Integer(U32), value: 6 }, Const { destination: Direct(32836), bit_size: Integer(U32), value: 3 }, Const { destination: Direct(32837), bit_size: Integer(U1), value: 0 }, Const { destination: Direct(32838), bit_size: Integer(U32), value: 0 }, Const { destination: Direct(32839), bit_size: Integer(U64), value: 0 }, Const { destination: Direct(32840), bit_size: Field, value: 0 }, Const { destination: Direct(32841), bit_size: Integer(U1), value: 1 }, Const { destination: Direct(32842), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(32843), bit_size: Integer(U32), value: 2 }, Const { destination: Direct(32844), bit_size: Integer(U32), value: 4 }, Const { destination: Direct(32845), bit_size: Integer(U8), value: 32 }, Const { destination: Direct(32846), bit_size: Integer(U8), value: 44 }, Const { destination: Direct(32847), bit_size: Integer(U8), value: 46 }, Const { destination: Direct(32848), bit_size: Integer(U8), value: 65 }, Const { destination: Direct(32849), bit_size: Integer(U8), value: 95 }, Const { destination: Direct(32850), bit_size: Integer(U8), value: 97 }, Const { destination: Direct(32851), bit_size: Integer(U8), value: 98 }, Const { destination: Direct(32852), bit_size: Integer(U8), value: 100 }, Const { destination: Direct(32853), bit_size: Integer(U8), value: 101 }, Const { destination: Direct(32854), bit_size: Integer(U8), value: 102 }, Const { destination: Direct(32855), bit_size: Integer(U8), value: 103 }, Const { destination: Direct(32856), bit_size: Integer(U8), value: 104 }, Const { destination: Direct(32857), bit_size: Integer(U8), value: 105 }, Const { destination: Direct(32858), bit_size: Integer(U8), value: 108 }, Const { destination: Direct(32859), bit_size: Integer(U8), value: 109 }, Const { destination: Direct(32860), bit_size: Integer(U8), value: 110 }, Const { destination: Direct(32861), bit_size: Integer(U8), value: 111 }, Const { destination: Direct(32862), bit_size: Integer(U8), value: 114 }, Const { destination: Direct(32863), bit_size: Integer(U8), value: 115 }, Const { destination: Direct(32864), bit_size: Integer(U8), value: 116 }, Const { destination: Direct(32865), bit_size: Integer(U8), value: 117 }, Const { destination: Direct(32866), bit_size: Integer(U8), value: 118 }, Const { destination: Direct(32867), bit_size: Integer(U8), value: 123 }, Const { destination: Direct(32868), bit_size: Integer(U8), value: 125 }, Const { destination: Direct(32869), bit_size: Field, value: 18446744073709551616 }, Return, Call { location: 11350 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Load { destination: Relative(4), source_pointer: Relative(5) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(9), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(9) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 110 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(9) }, Const { destination: Relative(5), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(6) }, Mov { destination: Relative(13), source: Relative(7) }, Mov { destination: Relative(14), source: Relative(8) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(5) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(11), location: 135 }, Call { location: 11610 }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 142 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(5) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 156 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32869) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(23), source: Relative(22) }, Store { destination_pointer: Relative(23), source: Relative(3) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Direct(32840) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(23), source: Direct(32840) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Store { destination_pointer: Relative(19), source: Direct(32842) }, Store { destination_pointer: Relative(20), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 196 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(10), location: 11320 }, Jump { location: 199 }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(18) }, Load { destination: Relative(13), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 208 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(21), size: Relative(22) }, output: HeapArray { pointer: Relative(23), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(17), source: Relative(10) }, Store { destination_pointer: Relative(18), source: Relative(15) }, Store { destination_pointer: Relative(19), source: Relative(13) }, Store { destination_pointer: Relative(20), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Load { destination: Relative(10), source_pointer: Relative(12) }, Cast { destination: Relative(13), source: Relative(10), bit_size: Integer(U32) }, Cast { destination: Relative(12), source: Relative(13), bit_size: Field }, Cast { destination: Relative(10), source: Relative(12), bit_size: Integer(U32) }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 233 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 237 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(12), location: 240 }, Jump { location: 305 }, Load { destination: Relative(12), source_pointer: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 246 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(15), location: 256 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(12), rhs: Relative(2) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(2) }, JumpIf { condition: Relative(17), location: 256 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 260 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(12), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 265 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(9) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(15), location: 271 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(12), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(12), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(12) }, JumpIf { condition: Relative(15), location: 295 }, Jump { location: 299 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(17), rhs: Relative(3) }, JumpIf { condition: Relative(12), location: 302 }, Jump { location: 298 }, Jump { location: 299 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(12) }, Jump { location: 237 }, Store { destination_pointer: Relative(11), source: Direct(32841) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Jump { location: 305 }, Load { destination: Relative(5), source_pointer: Relative(11) }, Load { destination: Relative(9), source_pointer: Relative(14) }, JumpIf { condition: Relative(5), location: 309 }, Call { location: 11622 }, Const { destination: Relative(5), bit_size: Integer(U8), value: 73 }, Const { destination: Relative(10), bit_size: Integer(U8), value: 107 }, Const { destination: Relative(11), bit_size: Integer(U8), value: 121 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 49 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(5) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, BinaryFieldOp { destination: Relative(13), op: Equals, lhs: Relative(4), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 437 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(15) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(17) }, Mov { destination: Direct(32772), source: Relative(16) }, Mov { destination: Direct(32773), source: Relative(18) }, Call { location: 23 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(17) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(4) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(9) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(15), size: Relative(14) } }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 444 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(9) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32869) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Relative(3) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, Store { destination_pointer: Relative(9), source: Relative(17) }, Store { destination_pointer: Relative(14), source: Relative(4) }, Store { destination_pointer: Relative(15), source: Direct(32842) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 484 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(4), location: 11290 }, Jump { location: 487 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(18), source_pointer: Relative(13) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 496 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(20), size: Relative(21) }, output: HeapArray { pointer: Relative(22), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(9), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(16), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Load { destination: Relative(4), source_pointer: Relative(9) }, Cast { destination: Relative(13), source: Relative(4), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(13), bit_size: Field }, Cast { destination: Relative(4), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(14), source_pointer: Relative(13) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(14) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 527 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 530 }, Jump { location: 638 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Load { destination: Relative(15), source_pointer: Relative(14) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 538 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(2) }, JumpIf { condition: Relative(17), location: 548 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 548 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(18), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(17) }, JumpIf { condition: Relative(18), location: 552 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(17), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(15) }, BinaryIntOp { destination: Relative(18), op: LessThanEquals, bit_size: U32, lhs: Relative(4), rhs: Relative(17) }, JumpIf { condition: Relative(18), location: 557 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(17), rhs: Relative(13) }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(18), rhs: Relative(13) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, JumpIf { condition: Relative(17), location: 563 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(13) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, Not { destination: Relative(14), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(14), rhs: Relative(17) }, JumpIf { condition: Relative(20), location: 587 }, Jump { location: 591 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(19), rhs: Relative(3) }, JumpIf { condition: Relative(14), location: 594 }, Jump { location: 590 }, Jump { location: 591 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(13) }, Jump { location: 527 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(9), source_pointer: Relative(8) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 600 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(17) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(13), source: Direct(32772) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(4) }, Store { destination_pointer: Relative(16), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Sub, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 634 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(8), source: Relative(4) }, Jump { location: 638 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 646 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32838) }, JumpIf { condition: Relative(8), location: 651 }, Call { location: 11654 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 661 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32869) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(3) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, Store { destination_pointer: Relative(14), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(8) }, Store { destination_pointer: Relative(16), source: Direct(32842) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 701 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(8), location: 11260 }, Jump { location: 704 }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(9) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 713 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(20), size: Relative(21) }, output: HeapArray { pointer: Relative(22), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(18) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(17), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(32842) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Cast { destination: Relative(13), source: Relative(8), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(13), bit_size: Field }, Cast { destination: Relative(8), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 738 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 742 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 745 }, Jump { location: 804 }, Load { destination: Relative(9), source_pointer: Relative(4) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 751 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 761 }, BinaryIntOp { destination: Relative(17), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 761 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 765 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 770 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(14), rhs: Relative(7) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, JumpIf { condition: Relative(14), location: 776 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Not { destination: Relative(15), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(9) }, JumpIf { condition: Relative(14), location: 795 }, Jump { location: 799 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(16), rhs: Relative(3) }, JumpIf { condition: Relative(9), location: 802 }, Jump { location: 798 }, Jump { location: 799 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(9) }, Jump { location: 742 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 804 }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(4), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 808 }, Call { location: 11657 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, Load { destination: Relative(4), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(13) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(8) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 847 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(14) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 851 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 11247 }, Jump { location: 854 }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 862 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Const { destination: Relative(13), bit_size: Integer(U8), value: 85 }, Const { destination: Relative(15), bit_size: Integer(U8), value: 72 }, Const { destination: Relative(16), bit_size: Integer(U8), value: 77 }, Const { destination: Relative(17), bit_size: Integer(U8), value: 112 }, Const { destination: Relative(18), bit_size: Integer(U8), value: 49 }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(15) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32850) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32863) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32856) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32850) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(17) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32855) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32856) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32859) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32865) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32863) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32851) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(18) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32846) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32855) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32861) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32864) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32845) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32867) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32868) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32847) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 970 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, Mov { destination: Relative(20), source: Relative(16) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U64), value: 7511829951750337011 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 37 }, Mov { destination: Direct(32771), source: Relative(21) }, Mov { destination: Direct(32772), source: Relative(20) }, Mov { destination: Direct(32773), source: Relative(22) }, Call { location: 23 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(21) }, Store { destination_pointer: Relative(20), source: Direct(32842) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(9) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Load { destination: Relative(9), source_pointer: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 983 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32869) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Relative(25), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(4) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32840) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32840) }, Store { destination_pointer: Relative(19), source: Relative(23) }, Store { destination_pointer: Relative(20), source: Relative(15) }, Store { destination_pointer: Relative(21), source: Direct(32842) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1023 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 11217 }, Jump { location: 1026 }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(15) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 1035 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(25), size: Relative(26) }, output: HeapArray { pointer: Relative(27), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(19), source: Relative(14) }, Store { destination_pointer: Relative(20), source: Relative(23) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(14), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(14), source: Relative(15), bit_size: Integer(U32) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1060 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1064 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(9) }, JumpIf { condition: Relative(15), location: 1067 }, Jump { location: 1132 }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1073 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 1083 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, JumpIf { condition: Relative(21), location: 1083 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1087 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1092 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(19), rhs: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(9) }, JumpIf { condition: Relative(19), location: 1098 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(24) }, Not { destination: Relative(20), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 1122 }, Jump { location: 1126 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(21), rhs: Relative(4) }, JumpIf { condition: Relative(15), location: 1129 }, Jump { location: 1125 }, Jump { location: 1126 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 1064 }, Store { destination_pointer: Relative(8), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(22) }, Jump { location: 1132 }, Load { destination: Relative(4), source_pointer: Relative(8) }, Load { destination: Relative(7), source_pointer: Relative(13) }, JumpIf { condition: Relative(4), location: 1136 }, Call { location: 11622 }, BinaryFieldOp { destination: Relative(4), op: Equals, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(4), location: 1160 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 52 }, Mov { destination: Relative(9), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 52 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(9) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U64), value: 15366650908120444287 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 48 }, Mov { destination: Direct(32771), source: Relative(14) }, Mov { destination: Direct(32772), source: Relative(13) }, Mov { destination: Direct(32773), source: Relative(15) }, Call { location: 23 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 48 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, Store { destination_pointer: Relative(13), source: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(6) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(9), size: Relative(8) } }, Const { destination: Relative(4), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, Load { destination: Relative(6), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 8 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(12) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(14) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(12) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(12) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32842) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32838) }, Load { destination: Relative(15), source_pointer: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1203 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(15) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(12) }, Mov { destination: Relative(21), source: Relative(13) }, Mov { destination: Relative(22), source: Relative(14) }, Mov { destination: Relative(23), source: Relative(6) }, Mov { destination: Relative(24), source: Relative(7) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(8) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(12) }, Mov { destination: Relative(21), source: Relative(13) }, Mov { destination: Relative(22), source: Relative(14) }, Mov { destination: Relative(23), source: Relative(6) }, Mov { destination: Relative(24), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 1233 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, JumpIf { condition: Relative(13), location: 1238 }, Call { location: 11660 }, Load { destination: Relative(8), source_pointer: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(15) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 1251 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(15), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(15), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32869) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Relative(6) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(15) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(23), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1291 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 11187 }, Jump { location: 1294 }, Load { destination: Relative(14), source_pointer: Relative(20) }, Load { destination: Relative(15), source_pointer: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(19), source_pointer: Relative(15) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(19) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 1303 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(19) }, Mov { destination: Relative(19), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(25), size: Relative(26) }, output: HeapArray { pointer: Relative(27), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(14) }, Store { destination_pointer: Relative(21), source: Relative(19) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(23), source: Direct(32841) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Load { destination: Relative(14), source_pointer: Relative(15) }, Cast { destination: Relative(16), source: Relative(14), bit_size: Integer(U32) }, Cast { destination: Relative(15), source: Relative(16), bit_size: Field }, Cast { destination: Relative(14), source: Relative(15), bit_size: Integer(U32) }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1328 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1332 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 1335 }, Jump { location: 1400 }, Load { destination: Relative(15), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1341 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(19), location: 1351 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, JumpIf { condition: Relative(21), location: 1351 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1355 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(15), op: Div, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(15) }, BinaryIntOp { destination: Relative(20), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, JumpIf { condition: Relative(20), location: 1360 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(19), rhs: Relative(8) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, BinaryIntOp { destination: Relative(15), op: Sub, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, JumpIf { condition: Relative(19), location: 1366 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U32, lhs: Relative(15), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32842) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32843) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(32836) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Load { destination: Relative(19), source_pointer: Relative(24) }, Not { destination: Relative(20), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(19), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(15) }, JumpIf { condition: Relative(19), location: 1390 }, Jump { location: 1394 }, BinaryFieldOp { destination: Relative(15), op: Equals, lhs: Relative(21), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 1397 }, Jump { location: 1393 }, Jump { location: 1394 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(15) }, Jump { location: 1332 }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Store { destination_pointer: Relative(13), source: Relative(22) }, Jump { location: 1400 }, Load { destination: Relative(6), source_pointer: Relative(12) }, Load { destination: Relative(7), source_pointer: Relative(13) }, JumpIf { condition: Relative(6), location: 1404 }, Call { location: 11622 }, Const { destination: Relative(6), bit_size: Integer(U8), value: 69 }, Const { destination: Relative(8), bit_size: Integer(U8), value: 120 }, Const { destination: Relative(12), bit_size: Integer(U8), value: 99 }, Const { destination: Relative(13), bit_size: Integer(U8), value: 119 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 37 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(15) }, Store { destination_pointer: Relative(16), source: Relative(6) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32852) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32860) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32849) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32846) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32851) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32855) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32864) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32847) }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(7), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 1509 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 40 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 3316745884754988903 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 36 }, Mov { destination: Direct(32771), source: Relative(19) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(20) }, Call { location: 23 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(19) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(9) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(7) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 1515 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(15) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(14) }, Mov { destination: Relative(14), source: Relative(9) }, Store { destination_pointer: Relative(14), source: Direct(32837) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32840) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32837) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32838) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1552 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Load { destination: Relative(7), source_pointer: Relative(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(7) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 1560 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(7) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 18 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(5) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32863) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32853) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32862) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32864) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32857) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32855) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32845) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32867) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32853) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32860) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32864) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32862) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(11) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32868) }, Const { destination: Relative(5), bit_size: Integer(U8), value: 34 }, Const { destination: Relative(19), bit_size: Integer(U8), value: 58 }, Const { destination: Relative(20), bit_size: Integer(U8), value: 91 }, Const { destination: Relative(21), bit_size: Integer(U8), value: 93 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 96 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32863) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32862) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32865) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32850) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32859) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32864) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32862) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(11) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32863) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(11) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32866) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32850) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32865) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32846) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32867) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(10) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32860) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(19) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32854) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32857) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32853) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32858) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32852) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(5) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32868) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 1802 }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 11147 }, Jump { location: 1805 }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 1813 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 51 }, Const { destination: Relative(17), bit_size: Integer(U8), value: 50 }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Direct(32867) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(19) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32865) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32863) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32855) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32855) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32846) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(13) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32856) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(5) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(19) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32868) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Relative(7)), HeapArray(HeapArray { pointer: Relative(8), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(8) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 1904 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32835) }, JumpIf { condition: Relative(6), location: 1909 }, Call { location: 11663 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 1915 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(8) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32869) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 78 }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 36 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(8) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32861) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32854) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32861) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32865) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32857) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32863) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32852) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32845) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32867) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32860) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32864) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32862) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32849) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(10) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32853) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(11) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32868) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32847) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 2008 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(7), location: 10963 }, Jump { location: 2011 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(16) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(7) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, Mov { destination: Relative(13), source: Relative(7) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(9), source: Direct(32842) }, Store { destination_pointer: Relative(14), source: Relative(6) }, Store { destination_pointer: Relative(15), source: Direct(32838) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(9), source: Relative(7) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(16) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(15) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(14) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32842) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Load { destination: Relative(16), source_pointer: Relative(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2098 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Relative(16) }, Mov { destination: Relative(2), source: Direct(32838) }, Jump { location: 2102 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Direct(32835) }, JumpIf { condition: Relative(16), location: 10932 }, Jump { location: 2105 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2114 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(22), source_pointer: Relative(15) }, Load { destination: Relative(23), source_pointer: Relative(13) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 2125 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Load { destination: Relative(26), source_pointer: Relative(2) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 2136 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(26) }, Load { destination: Relative(26), source_pointer: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 2144 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(23) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(23) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(23) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32869) }, JumpIf { condition: Relative(26), location: 2162 }, Jump { location: 2185 }, Store { destination_pointer: Relative(24), source: Direct(32841) }, Load { destination: Relative(23), source_pointer: Relative(2) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 2169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(23) }, Load { destination: Relative(23), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2177 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(23) }, Mov { destination: Relative(21), source: Direct(32838) }, Jump { location: 2181 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(23), location: 10728 }, Jump { location: 2184 }, Jump { location: 2185 }, Load { destination: Relative(2), source_pointer: Relative(24) }, JumpIf { condition: Relative(2), location: 2188 }, Call { location: 11666 }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2195 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(17) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Relative(3) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Store { destination_pointer: Relative(2), source: Relative(24) }, Store { destination_pointer: Relative(17), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(23), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2222 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 10698 }, Jump { location: 2225 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2234 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(2), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(23), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(16) }, Cast { destination: Relative(17), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(17), bit_size: Field }, Cast { destination: Relative(2), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 2261 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2265 }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(17), location: 2268 }, Jump { location: 2376 }, Load { destination: Relative(17), source_pointer: Relative(14) }, Load { destination: Relative(21), source_pointer: Relative(15) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 2276 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 2286 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, JumpIf { condition: Relative(26), location: 2286 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 2290 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(22) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 2295 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, JumpIf { condition: Relative(24), location: 2301 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, Not { destination: Relative(21), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(24) }, JumpIf { condition: Relative(27), location: 2325 }, Jump { location: 2329 }, BinaryFieldOp { destination: Relative(21), op: Equals, lhs: Relative(26), rhs: Relative(3) }, JumpIf { condition: Relative(21), location: 2332 }, Jump { location: 2328 }, Jump { location: 2329 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(17) }, Jump { location: 2265 }, Load { destination: Relative(1), source_pointer: Relative(14) }, Load { destination: Relative(2), source_pointer: Relative(15) }, Load { destination: Relative(3), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 2338 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(17) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(2), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(25) }, Store { destination_pointer: Relative(21), source: Relative(26) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(17), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Store { destination_pointer: Relative(22), source: Relative(28) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(3) }, JumpIf { condition: Relative(17), location: 2372 }, Call { location: 11651 }, Store { destination_pointer: Relative(14), source: Relative(1) }, Store { destination_pointer: Relative(15), source: Relative(16) }, Store { destination_pointer: Relative(13), source: Relative(2) }, Jump { location: 2376 }, Load { destination: Relative(1), source_pointer: Relative(7) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(14) }, Load { destination: Relative(7), source_pointer: Relative(15) }, Load { destination: Relative(9), source_pointer: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2391 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2399 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(9) }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(17), source: Relative(9) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32840) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Direct(32869) }, JumpIf { condition: Relative(14), location: 2417 }, Jump { location: 2440 }, Store { destination_pointer: Relative(13), source: Direct(32841) }, Load { destination: Relative(14), source_pointer: Relative(2) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 2424 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(3) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(17), source: Relative(17), bit_size: U1 }, JumpIf { condition: Relative(17), location: 2432 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(14) }, Mov { destination: Relative(9), source: Direct(32838) }, Jump { location: 2436 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, JumpIf { condition: Relative(14), location: 10494 }, Jump { location: 2439 }, Jump { location: 2440 }, Load { destination: Relative(2), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(2), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 2444 }, Call { location: 11669 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(2) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32838) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 2479 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, Const { destination: Relative(2), bit_size: Field, value: 5 }, Const { destination: Relative(13), bit_size: Field, value: 11 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(2) }, Mov { destination: Relative(26), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(15) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(15), bit_size: Field, value: 2 }, Const { destination: Relative(16), bit_size: Field, value: 13 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(15) }, Mov { destination: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(2) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 2523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Const { destination: Relative(21), bit_size: Field, value: 55 }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2528 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(14), location: 10414 }, Jump { location: 2531 }, Load { destination: Relative(14), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2539 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, JumpIf { condition: Relative(9), location: 2544 }, Call { location: 11672 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32837) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(9) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 2554 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Relative(15) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, Store { destination_pointer: Relative(9), source: Relative(25) }, Store { destination_pointer: Relative(22), source: Relative(3) }, Store { destination_pointer: Relative(23), source: Direct(32842) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2581 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 10384 }, Jump { location: 2584 }, Load { destination: Relative(3), source_pointer: Relative(9) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(17) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2593 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(27), size: Relative(28) }, output: HeapArray { pointer: Relative(29), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(9), source: Relative(3) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Load { destination: Relative(3), source_pointer: Relative(9) }, Cast { destination: Relative(17), source: Relative(3), bit_size: Integer(U32) }, Cast { destination: Relative(9), source: Relative(17), bit_size: Field }, Cast { destination: Relative(3), source: Relative(9), bit_size: Integer(U32) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2618 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2622 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 2625 }, Jump { location: 2684 }, Load { destination: Relative(9), source_pointer: Relative(14) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(9) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 2631 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(1) }, JumpIf { condition: Relative(21), location: 2641 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(9), rhs: Relative(1) }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(23), location: 2641 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(9) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 2645 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(9) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(3), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 2650 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: Div, bit_size: U32, lhs: Relative(21), rhs: Relative(7) }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(22), rhs: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Sub, bit_size: U32, lhs: Relative(21), rhs: Relative(23) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(9), rhs: Relative(7) }, JumpIf { condition: Relative(21), location: 2656 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Load { destination: Relative(9), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(25) }, Not { destination: Relative(22), source: Relative(21), bit_size: U1 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(9) }, JumpIf { condition: Relative(21), location: 2675 }, Jump { location: 2679 }, BinaryFieldOp { destination: Relative(9), op: Equals, lhs: Relative(23), rhs: Relative(15) }, JumpIf { condition: Relative(9), location: 2682 }, Jump { location: 2678 }, Jump { location: 2679 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(9) }, Jump { location: 2622 }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Jump { location: 2684 }, Load { destination: Relative(3), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U1, lhs: Relative(3), rhs: Direct(32837) }, JumpIf { condition: Relative(6), location: 2688 }, Call { location: 11675 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(9) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(9), bit_size: Field, value: 3 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(15) }, Mov { destination: Relative(26), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(14), bit_size: Field, value: 7 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(2) }, Mov { destination: Relative(26), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 21 }, Mov { destination: Relative(21), source: Direct(0) }, Mov { destination: Relative(22), source: Relative(6) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(3) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 2758 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(27) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(25) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(25) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(23) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 2784 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 2788 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(23), location: 10340 }, Jump { location: 2791 }, Load { destination: Relative(17), source_pointer: Relative(25) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Load { destination: Relative(23), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 2799 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 80 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(25) }, IndirectConst { destination_pointer: Relative(23), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(25) }, Store { destination_pointer: Relative(26), source: Direct(32848) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32854) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32857) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32852) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32856) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32852) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32856) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32851) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32854) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32849) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32857) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32859) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32846) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32851) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32855) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32861) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32864) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(10) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(11) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32863) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32849) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32860) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32847) }, Load { destination: Relative(25), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 2970 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(22) }, JumpIf { condition: Relative(25), location: 2996 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(28) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(30) }, Mov { destination: Direct(32772), source: Relative(29) }, Mov { destination: Direct(32773), source: Relative(31) }, Call { location: 23 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(28), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3002 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 3008 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Load { destination: Relative(22), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(28) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Load { destination: Relative(17), source_pointer: Relative(21) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(17) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3031 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(21) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3042 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(27) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(30) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(27) }, Store { destination_pointer: Relative(29), source: Direct(32838) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3068 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(21), location: 3071 }, Jump { location: 3265 }, Load { destination: Relative(21), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3079 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Direct(32838) }, JumpIf { condition: Relative(22), location: 3264 }, Jump { location: 3084 }, Load { destination: Relative(21), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3092 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(28), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 3109 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(29), source: Relative(26) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, JumpIf { condition: Relative(24), location: 3117 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(24), location: 3262 }, Jump { location: 3121 }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(22), source: Relative(28) }, Jump { location: 3127 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, JumpIf { condition: Relative(26), location: 3212 }, Jump { location: 3130 }, Load { destination: Relative(22), source_pointer: Relative(17) }, Load { destination: Relative(26), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 3135 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(32) }, JumpIf { condition: Relative(25), location: 3140 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(25), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(26) }, Store { destination_pointer: Relative(33), source: Relative(25) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(27) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Load { destination: Relative(25), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(25) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 3166 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, JumpIf { condition: Relative(32), location: 3172 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(25) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Store { destination_pointer: Relative(29), source: Relative(33) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(26) }, JumpIf { condition: Relative(22), location: 3186 }, Jump { location: 3210 }, Load { destination: Relative(22), source_pointer: Relative(33) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 3192 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(26) }, JumpIf { condition: Relative(25), location: 3198 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(28) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(25) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Jump { location: 3210 }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 3068 }, Load { destination: Relative(26), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 3216 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(22) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(25), location: 3221 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(26), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(26), location: 3227 }, Jump { location: 3259 }, Load { destination: Relative(26), source_pointer: Relative(17) }, Load { destination: Relative(31), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 3232 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(22) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(22) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(17), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, JumpIf { condition: Relative(32), location: 3257 }, Call { location: 11616 }, Store { destination_pointer: Relative(24), source: Relative(26) }, Jump { location: 3259 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Mov { destination: Relative(22), source: Relative(26) }, Jump { location: 3127 }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 3068 }, Jump { location: 3265 }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(3) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3275 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(28) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(25) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(25) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 3301 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3305 }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(25), location: 10296 }, Jump { location: 3308 }, Load { destination: Relative(17), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Load { destination: Relative(25), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3316 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(25) }, Mov { destination: Relative(25), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(25), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Direct(32848) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32852) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32856) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32852) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32856) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32851) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32849) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32859) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32846) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32851) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32855) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32866) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32865) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32849) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32858) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32847) }, Load { destination: Relative(27), source_pointer: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3491 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(24) }, JumpIf { condition: Relative(27), location: 3517 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, Mov { destination: Relative(31), source: Relative(30) }, IndirectConst { destination_pointer: Relative(31), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(32) }, Mov { destination: Direct(32772), source: Relative(31) }, Mov { destination: Direct(32773), source: Relative(33) }, Call { location: 23 }, Const { destination: Relative(32), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(32) }, Store { destination_pointer: Relative(31), source: Direct(32843) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(24) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(17) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(30), size: Relative(29) } }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 3529 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(29) } }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Load { destination: Relative(17), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32844) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(4) }, Load { destination: Relative(29), source_pointer: Relative(30) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(17) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(24) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 3552 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(22) }, Load { destination: Relative(29), source_pointer: Relative(22) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 3563 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(29) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(32) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, Mov { destination: Relative(31), source: Relative(29) }, Store { destination_pointer: Relative(31), source: Direct(32838) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32843) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32842) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3589 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(22), location: 3592 }, Jump { location: 3786 }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(31) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3600 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Direct(32838) }, JumpIf { condition: Relative(24), location: 3785 }, Jump { location: 3605 }, Load { destination: Relative(22), source_pointer: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(31) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3613 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Load { destination: Relative(32), source_pointer: Relative(33) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 3630 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Store { destination_pointer: Relative(31), source: Relative(28) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(22) }, JumpIf { condition: Relative(26), location: 3638 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(26), location: 3783 }, Jump { location: 3642 }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(30) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Direct(32836) }, Mov { destination: Relative(24), source: Relative(30) }, Jump { location: 3648 }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(32) }, JumpIf { condition: Relative(28), location: 3733 }, Jump { location: 3651 }, Load { destination: Relative(24), source_pointer: Relative(17) }, Load { destination: Relative(28), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(28), rhs: Direct(32836) }, JumpIf { condition: Relative(26), location: 3656 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(28) }, Load { destination: Relative(26), source_pointer: Relative(34) }, JumpIf { condition: Relative(27), location: 3661 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(32) }, Load { destination: Relative(27), source_pointer: Relative(34) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(33), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(28) }, Store { destination_pointer: Relative(35), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(32) }, Store { destination_pointer: Relative(34), source: Relative(26) }, Store { destination_pointer: Relative(17), source: Relative(24) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(27), source_pointer: Relative(26) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(34), op: Equals, bit_size: U32, lhs: Relative(33), rhs: Relative(27) }, Not { destination: Relative(34), source: Relative(34), bit_size: U1 }, JumpIf { condition: Relative(34), location: 3687 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, JumpIf { condition: Relative(34), location: 3693 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(35), source: Direct(32773) }, Mov { destination: Relative(36), source: Direct(32774) }, Store { destination_pointer: Relative(36), source: Relative(27) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Relative(32) }, Store { destination_pointer: Relative(29), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(35) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(28) }, JumpIf { condition: Relative(24), location: 3707 }, Jump { location: 3731 }, Load { destination: Relative(24), source_pointer: Relative(35) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 3713 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(27), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(28) }, JumpIf { condition: Relative(27), location: 3719 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(30) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(29), source: Relative(27) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Jump { location: 3731 }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 3589 }, Load { destination: Relative(28), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(33), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, JumpIf { condition: Relative(33), location: 3737 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(24) }, Load { destination: Relative(33), source_pointer: Relative(35) }, JumpIf { condition: Relative(27), location: 3742 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryFieldOp { destination: Relative(28), op: LessThan, lhs: Relative(33), rhs: Relative(34) }, JumpIf { condition: Relative(28), location: 3748 }, Jump { location: 3780 }, Load { destination: Relative(28), source_pointer: Relative(17) }, Load { destination: Relative(33), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(34), op: LessThan, bit_size: U32, lhs: Relative(33), rhs: Direct(32836) }, JumpIf { condition: Relative(34), location: 3753 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(33) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(24) }, Load { destination: Relative(35), source_pointer: Relative(37) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(36), source: Direct(32773) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(33) }, Store { destination_pointer: Relative(38), source: Relative(35) }, Mov { destination: Direct(32771), source: Relative(36) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(28), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(24) }, Store { destination_pointer: Relative(37), source: Relative(34) }, Store { destination_pointer: Relative(17), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: LessThanEquals, bit_size: U32, lhs: Relative(33), rhs: Relative(28) }, JumpIf { condition: Relative(34), location: 3778 }, Call { location: 11616 }, Store { destination_pointer: Relative(26), source: Relative(28) }, Jump { location: 3780 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Relative(24), source: Relative(28) }, Jump { location: 3648 }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 3589 }, Jump { location: 3786 }, Load { destination: Relative(22), source_pointer: Relative(17) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(26) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(6) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(3) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 3814 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 3818 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(17) }, JumpIf { condition: Relative(3), location: 10245 }, Jump { location: 3821 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(6), source_pointer: Relative(26) }, Load { destination: Relative(17), source_pointer: Relative(6) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(17) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 3829 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(17) }, Mov { destination: Relative(17), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Direct(32848) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32854) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32866) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32850) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32852) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32856) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32852) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32856) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32850) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32866) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32867) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32854) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32849) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32868) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32859) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32846) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32851) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32865) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32855) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32861) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32845) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32867) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32864) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32862) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32857) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32863) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32849) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32858) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32853) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32860) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32868) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32847) }, Load { destination: Relative(26), source_pointer: Relative(6) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4006 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(26), location: 4032 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, Mov { destination: Relative(30), source: Relative(29) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(31) }, Mov { destination: Direct(32772), source: Relative(30) }, Mov { destination: Direct(32773), source: Relative(32) }, Call { location: 23 }, Const { destination: Relative(31), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(31) }, Store { destination_pointer: Relative(30), source: Direct(32843) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(7) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(3) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(29), size: Relative(28) } }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4038 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 4044 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(28) } }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(7) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4066 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 10216 }, Jump { location: 4069 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(3) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4076 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(3) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4087 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(24) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(28) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(24) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32843) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32842) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4113 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 4116 }, Jump { location: 4358 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(7), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4124 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(7), location: 4357 }, Jump { location: 4129 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(7), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4137 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Load { destination: Relative(31), source_pointer: Relative(32) }, Load { destination: Relative(3), source_pointer: Relative(29) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(3) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 4154 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(3) }, Store { destination_pointer: Relative(24), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Relative(29) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, JumpIf { condition: Relative(26), location: 4162 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(26), location: 4355 }, Jump { location: 4166 }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(30) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, Mov { destination: Relative(7), source: Relative(30) }, Jump { location: 4173 }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 4281 }, Jump { location: 4176 }, Load { destination: Relative(7), source_pointer: Relative(6) }, Load { destination: Relative(32), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(32), rhs: Direct(32836) }, JumpIf { condition: Relative(26), location: 4181 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(32), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(26) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(34) }, Load { destination: Relative(35), source_pointer: Relative(37) }, JumpIf { condition: Relative(28), location: 4191 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(29) }, Load { destination: Relative(28), source_pointer: Relative(37) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(36) }, Load { destination: Relative(37), source_pointer: Relative(39) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(38), source: Direct(32773) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(26) }, Store { destination_pointer: Relative(40), source: Relative(28) }, Mov { destination: Direct(32771), source: Relative(38) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(34) }, Store { destination_pointer: Relative(28), source: Relative(37) }, Mov { destination: Direct(32771), source: Relative(7) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(34), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(7), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(36) }, Store { destination_pointer: Relative(29), source: Relative(35) }, Store { destination_pointer: Relative(6), source: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(26) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(33), source: Relative(33), bit_size: U1 }, JumpIf { condition: Relative(33), location: 4235 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(32), rhs: Relative(28) }, JumpIf { condition: Relative(33), location: 4241 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(34), source: Direct(32773) }, Mov { destination: Relative(35), source: Direct(32774) }, Store { destination_pointer: Relative(35), source: Relative(28) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, Store { destination_pointer: Relative(35), source: Relative(31) }, Store { destination_pointer: Relative(24), source: Relative(33) }, Store { destination_pointer: Relative(27), source: Relative(34) }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(32) }, JumpIf { condition: Relative(7), location: 4255 }, Jump { location: 4279 }, Load { destination: Relative(7), source_pointer: Relative(34) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4261 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(7) }, BinaryIntOp { destination: Relative(7), op: Sub, bit_size: U32, lhs: Relative(32), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(32) }, JumpIf { condition: Relative(28), location: 4267 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Store { destination_pointer: Relative(31), source: Relative(30) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Relative(7) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Jump { location: 4279 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4113 }, Load { destination: Relative(32), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(33), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(33), location: 4285 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(33) }, Load { destination: Relative(34), source_pointer: Relative(36) }, JumpIf { condition: Relative(28), location: 4291 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(29) }, Load { destination: Relative(35), source_pointer: Relative(37) }, BinaryFieldOp { destination: Relative(32), op: LessThan, lhs: Relative(34), rhs: Relative(35) }, JumpIf { condition: Relative(32), location: 4297 }, Jump { location: 4352 }, Load { destination: Relative(32), source_pointer: Relative(6) }, Load { destination: Relative(34), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(35), op: LessThan, bit_size: U32, lhs: Relative(34), rhs: Direct(32836) }, JumpIf { condition: Relative(35), location: 4302 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(35), op: Mul, bit_size: U32, lhs: Relative(34), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(35) }, Load { destination: Relative(36), source_pointer: Relative(38) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(37) }, Load { destination: Relative(38), source_pointer: Relative(40) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(41), op: Add, bit_size: U32, lhs: Relative(40), rhs: Relative(33) }, Load { destination: Relative(39), source_pointer: Relative(41) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(42), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Relative(40) }, Load { destination: Relative(41), source_pointer: Relative(43) }, Mov { destination: Direct(32771), source: Relative(32) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(42), source: Direct(32773) }, BinaryIntOp { destination: Relative(43), op: Add, bit_size: U32, lhs: Relative(42), rhs: Direct(2) }, BinaryIntOp { destination: Relative(44), op: Add, bit_size: U32, lhs: Relative(43), rhs: Relative(35) }, Store { destination_pointer: Relative(44), source: Relative(39) }, Mov { destination: Direct(32771), source: Relative(42) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(32), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(37) }, Store { destination_pointer: Relative(39), source: Relative(41) }, Mov { destination: Direct(32771), source: Relative(32) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(35), source: Direct(32773) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(33) }, Store { destination_pointer: Relative(39), source: Relative(36) }, Mov { destination: Direct(32771), source: Relative(35) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(32), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(40) }, Store { destination_pointer: Relative(36), source: Relative(38) }, Store { destination_pointer: Relative(6), source: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: LessThanEquals, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, JumpIf { condition: Relative(33), location: 4350 }, Call { location: 11616 }, Store { destination_pointer: Relative(26), source: Relative(32) }, Jump { location: 4352 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(32) }, Jump { location: 4173 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4113 }, Jump { location: 4358 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(7) }, Store { destination_pointer: Relative(24), source: Relative(15) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(13) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4379 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4383 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 10203 }, Jump { location: 4386 }, Load { destination: Relative(6), source_pointer: Relative(7) }, JumpIf { condition: Relative(6), location: 4389 }, Call { location: 11793 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(7) }, Store { destination_pointer: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(14) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4409 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4413 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 10190 }, Jump { location: 4416 }, Load { destination: Relative(6), source_pointer: Relative(7) }, JumpIf { condition: Relative(6), location: 4419 }, Call { location: 11796 }, Mov { destination: Relative(6), source: Direct(1) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(6), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(7) }, Store { destination_pointer: Relative(21), source: Relative(15) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(9) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(14) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32841) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4445 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4449 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 10167 }, Jump { location: 4452 }, Load { destination: Relative(3), source_pointer: Relative(7) }, JumpIf { condition: Relative(3), location: 4455 }, Call { location: 11799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(15) }, Mov { destination: Relative(31), source: Relative(9) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(2) }, Mov { destination: Relative(31), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(13) }, Mov { destination: Relative(31), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4523 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(28) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4549 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4553 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(22), location: 10116 }, Jump { location: 4556 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4564 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 4590 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(27) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(29) }, Mov { destination: Direct(32772), source: Relative(28) }, Mov { destination: Direct(32773), source: Relative(30) }, Call { location: 23 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(27), size: Relative(26) } }, Const { destination: Relative(22), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32838) }, Load { destination: Relative(27), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4625 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4629 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 10090 }, Jump { location: 4632 }, Load { destination: Relative(13), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Store { destination_pointer: Relative(6), source: Relative(13) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Store { destination_pointer: Relative(3), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4644 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4648 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 10017 }, Jump { location: 4651 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4660 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(28) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32838) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 4686 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4690 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(22), location: 9973 }, Jump { location: 4693 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4701 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(21) }, JumpIf { condition: Relative(22), location: 4727 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(27) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(29) }, Mov { destination: Direct(32772), source: Relative(28) }, Mov { destination: Direct(32773), source: Relative(30) }, Call { location: 23 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(29) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(27), size: Relative(26) } }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4733 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 4739 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, Load { destination: Relative(13), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32844) }, Load { destination: Relative(21), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(4) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(21) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 4762 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 4773 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(29) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(26) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Direct(32838) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 4799 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(16), location: 4802 }, Jump { location: 4996 }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4810 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 4995 }, Jump { location: 4815 }, Load { destination: Relative(16), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 4823 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 4840 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 4848 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(22), location: 4993 }, Jump { location: 4852 }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(21), source: Relative(29) }, Jump { location: 4858 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 4943 }, Jump { location: 4861 }, Load { destination: Relative(21), source_pointer: Relative(13) }, Load { destination: Relative(27), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 4866 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(32) }, JumpIf { condition: Relative(24), location: 4871 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(24), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(27) }, Store { destination_pointer: Relative(33), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(22) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(26) }, Load { destination: Relative(22), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(24) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 4897 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, JumpIf { condition: Relative(32), location: 4903 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(24) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(32) }, Store { destination_pointer: Relative(28), source: Relative(33) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 4917 }, Jump { location: 4941 }, Load { destination: Relative(21), source_pointer: Relative(33) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 4923 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(24), location: 4929 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Jump { location: 4941 }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4799 }, Load { destination: Relative(27), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 4947 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(21) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(24), location: 4952 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(27), location: 4958 }, Jump { location: 4990 }, Load { destination: Relative(27), source_pointer: Relative(13) }, Load { destination: Relative(31), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 4963 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(21) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(13), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, JumpIf { condition: Relative(32), location: 4988 }, Call { location: 11616 }, Store { destination_pointer: Relative(22), source: Relative(27) }, Jump { location: 4990 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(27) }, Jump { location: 4858 }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4799 }, Jump { location: 4996 }, Load { destination: Relative(16), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5006 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(28) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32838) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(24) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(24) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 5032 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5036 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 9929 }, Jump { location: 5039 }, Load { destination: Relative(13), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5047 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(22) }, JumpIf { condition: Relative(24), location: 5073 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, Mov { destination: Relative(29), source: Relative(28) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(30) }, Mov { destination: Direct(32772), source: Relative(29) }, Mov { destination: Direct(32773), source: Relative(31) }, Call { location: 23 }, Const { destination: Relative(30), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, Store { destination_pointer: Relative(29), source: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(22) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(13) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(28), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5079 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, JumpIf { condition: Relative(22), location: 5085 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Load { destination: Relative(13), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Load { destination: Relative(22), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(28) }, Mov { destination: Relative(4), source: Direct(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Load { destination: Relative(13), source_pointer: Relative(4) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5108 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(4) }, Load { destination: Relative(22), source_pointer: Relative(4) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5119 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(22) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(4), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(28) }, Mov { destination: Relative(28), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Direct(32838) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32843) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(4) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5145 }, BinaryIntOp { destination: Relative(4), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(4), location: 5148 }, Jump { location: 5342 }, Load { destination: Relative(4), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5156 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 5341 }, Jump { location: 5161 }, Load { destination: Relative(4), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(21) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Load { destination: Relative(30), source_pointer: Relative(31) }, Load { destination: Relative(4), source_pointer: Relative(27) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(4) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 5186 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(4) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(27) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(24), location: 5194 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(24), location: 5339 }, Jump { location: 5198 }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Direct(32836) }, Mov { destination: Relative(21), source: Relative(29) }, Jump { location: 5204 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 5289 }, Jump { location: 5207 }, Load { destination: Relative(21), source_pointer: Relative(13) }, Load { destination: Relative(27), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 5212 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, Load { destination: Relative(24), source_pointer: Relative(32) }, JumpIf { condition: Relative(26), location: 5217 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(32) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(27) }, Store { destination_pointer: Relative(33), source: Relative(26) }, Mov { destination: Direct(32771), source: Relative(31) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(30) }, Store { destination_pointer: Relative(32), source: Relative(24) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(28) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(26) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 5243 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, JumpIf { condition: Relative(32), location: 5249 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(33), source: Direct(32773) }, Mov { destination: Relative(34), source: Direct(32774) }, Store { destination_pointer: Relative(34), source: Relative(26) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(30) }, Store { destination_pointer: Relative(22), source: Relative(32) }, Store { destination_pointer: Relative(28), source: Relative(33) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 5263 }, Jump { location: 5287 }, Load { destination: Relative(21), source_pointer: Relative(33) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 5269 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(26), location: 5275 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(27), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(21) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Jump { location: 5287 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 5145 }, Load { destination: Relative(27), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, JumpIf { condition: Relative(31), location: 5293 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(21) }, Load { destination: Relative(31), source_pointer: Relative(33) }, JumpIf { condition: Relative(26), location: 5298 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(31), rhs: Relative(32) }, JumpIf { condition: Relative(27), location: 5304 }, Jump { location: 5336 }, Load { destination: Relative(27), source_pointer: Relative(13) }, Load { destination: Relative(31), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(32), op: LessThan, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, JumpIf { condition: Relative(32), location: 5309 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(21) }, Load { destination: Relative(33), source_pointer: Relative(35) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(31) }, Store { destination_pointer: Relative(36), source: Relative(33) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(21) }, Store { destination_pointer: Relative(35), source: Relative(32) }, Store { destination_pointer: Relative(13), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(31), rhs: Relative(27) }, JumpIf { condition: Relative(32), location: 5334 }, Call { location: 11616 }, Store { destination_pointer: Relative(24), source: Relative(27) }, Jump { location: 5336 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(27) }, Jump { location: 5204 }, Mov { destination: Relative(1), source: Relative(4) }, Jump { location: 5145 }, Jump { location: 5342 }, Load { destination: Relative(4), source_pointer: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5349 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Const { destination: Relative(13), bit_size: Field, value: 6 }, Const { destination: Relative(22), bit_size: Field, value: 15 }, Const { destination: Relative(24), bit_size: Field, value: 33 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(13) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(22) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, Load { destination: Relative(27), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 5374 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5378 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(21), location: 9916 }, Jump { location: 5381 }, Load { destination: Relative(21), source_pointer: Relative(24) }, Const { destination: Relative(24), bit_size: Integer(U8), value: 71 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 40 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(12) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(12) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32862) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32850) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32864) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32857) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32860) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32861) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32854) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(10) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(11) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(19) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32845) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32867) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(10) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32853) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(11) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32863) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32868) }, JumpIf { condition: Relative(21), location: 5493 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 44 }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 44 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(24) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U64), value: 2386996775688025706 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 39 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 39 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Trap { revert_data: HeapVector { pointer: Relative(24), size: Relative(12) } }, Const { destination: Relative(12), bit_size: Field, value: 35 }, Const { destination: Relative(16), bit_size: Field, value: 65 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(26), source: Relative(22) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(12) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5515 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5519 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(16), location: 9903 }, Jump { location: 5522 }, Load { destination: Relative(4), source_pointer: Relative(12) }, JumpIf { condition: Relative(4), location: 5525 }, Call { location: 11796 }, Load { destination: Relative(4), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5534 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(24) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32838) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5560 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5564 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(21), location: 9852 }, Jump { location: 5567 }, Load { destination: Relative(4), source_pointer: Relative(24) }, Load { destination: Relative(12), source_pointer: Relative(26) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 5575 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 5601 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, Mov { destination: Relative(27), source: Relative(26) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(28) }, Mov { destination: Direct(32772), source: Relative(27) }, Mov { destination: Direct(32773), source: Relative(29) }, Call { location: 23 }, Const { destination: Relative(28), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(28) }, Store { destination_pointer: Relative(27), source: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(4) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(26), size: Relative(24) } }, Const { destination: Relative(21), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, Mov { destination: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32842) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Load { destination: Relative(26), source_pointer: Relative(12) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5636 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(26) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5640 }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 9825 }, Jump { location: 5643 }, Load { destination: Relative(4), source_pointer: Relative(21) }, Load { destination: Relative(12), source_pointer: Relative(24) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Store { destination_pointer: Relative(6), source: Relative(4) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(3), source: Relative(16) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(3) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5673 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5677 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(4) }, JumpIf { condition: Relative(3), location: 9774 }, Jump { location: 5680 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 5688 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(16) }, JumpIf { condition: Relative(6), location: 5714 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(26) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, Store { destination_pointer: Relative(22), source: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(3) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(12) } }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 5720 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, JumpIf { condition: Relative(6), location: 5726 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(16) } }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(6) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(6) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5748 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(3), location: 9745 }, Jump { location: 5751 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(3) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, Not { destination: Relative(7), source: Relative(7), bit_size: U1 }, JumpIf { condition: Relative(7), location: 5758 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Mov { destination: Relative(4), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 5769 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 2 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(21) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(7) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(7) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(3) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 5795 }, BinaryIntOp { destination: Relative(3), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32835) }, JumpIf { condition: Relative(3), location: 5798 }, Jump { location: 6040 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(16) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5806 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, BinaryIntOp { destination: Relative(6), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Direct(32838) }, JumpIf { condition: Relative(6), location: 6039 }, Jump { location: 5811 }, Load { destination: Relative(3), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(16) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 5819 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11678 }, Mov { destination: Relative(22), source: Direct(32773) }, Mov { destination: Relative(27), source: Direct(32774) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Load { destination: Relative(26), source_pointer: Relative(27) }, Load { destination: Relative(3), source_pointer: Relative(22) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(6), rhs: Relative(3) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 5836 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(3) }, Store { destination_pointer: Relative(7), source: Relative(12) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(24), rhs: Relative(3) }, JumpIf { condition: Relative(12), location: 5844 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, JumpIf { condition: Relative(12), location: 6037 }, Jump { location: 5848 }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Direct(32836) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Direct(32843) }, Mov { destination: Relative(6), source: Relative(24) }, Jump { location: 5855 }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(26) }, JumpIf { condition: Relative(27), location: 5963 }, Jump { location: 5858 }, Load { destination: Relative(6), source_pointer: Relative(4) }, Load { destination: Relative(27), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(27), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 5863 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(12) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, JumpIf { condition: Relative(21), location: 5873 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(31) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(33), source: Direct(32773) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(12) }, Store { destination_pointer: Relative(35), source: Relative(21) }, Mov { destination: Direct(32771), source: Relative(33) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(29) }, Store { destination_pointer: Relative(21), source: Relative(32) }, Mov { destination: Direct(32771), source: Relative(6) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(12), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(22) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(6), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, Store { destination_pointer: Relative(22), source: Relative(30) }, Store { destination_pointer: Relative(4), source: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 5917 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, JumpIf { condition: Relative(28), location: 5923 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(29), source: Direct(32773) }, Mov { destination: Relative(30), source: Direct(32774) }, Store { destination_pointer: Relative(30), source: Relative(21) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Relative(26) }, Store { destination_pointer: Relative(7), source: Relative(28) }, Store { destination_pointer: Relative(16), source: Relative(29) }, BinaryIntOp { destination: Relative(6), op: LessThan, bit_size: U32, lhs: Direct(32838), rhs: Relative(27) }, JumpIf { condition: Relative(6), location: 5937 }, Jump { location: 5961 }, Load { destination: Relative(6), source_pointer: Relative(29) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(6) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 5943 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(27) }, JumpIf { condition: Relative(21), location: 5949 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(29) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(22), source: Direct(32773) }, Mov { destination: Relative(26), source: Direct(32774) }, Store { destination_pointer: Relative(26), source: Relative(24) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Jump { location: 5961 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5795 }, Load { destination: Relative(27), source_pointer: Relative(4) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(28), location: 5967 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(28), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, JumpIf { condition: Relative(21), location: 5973 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(22) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(27), op: LessThan, lhs: Relative(29), rhs: Relative(30) }, JumpIf { condition: Relative(27), location: 5979 }, Jump { location: 6034 }, Load { destination: Relative(27), source_pointer: Relative(4) }, Load { destination: Relative(29), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(29), rhs: Direct(32836) }, JumpIf { condition: Relative(30), location: 5984 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(28) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Relative(35) }, Load { destination: Relative(36), source_pointer: Relative(38) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(37), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(30) }, Store { destination_pointer: Relative(39), source: Relative(34) }, Mov { destination: Direct(32771), source: Relative(37) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(32) }, Store { destination_pointer: Relative(34), source: Relative(36) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(28) }, Store { destination_pointer: Relative(34), source: Relative(31) }, Mov { destination: Direct(32771), source: Relative(30) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(35) }, Store { destination_pointer: Relative(31), source: Relative(33) }, Store { destination_pointer: Relative(4), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6032 }, Call { location: 11616 }, Store { destination_pointer: Relative(12), source: Relative(27) }, Jump { location: 6034 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(27) }, Jump { location: 5855 }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5795 }, Jump { location: 6040 }, Load { destination: Relative(3), source_pointer: Relative(4) }, Const { destination: Relative(4), bit_size: Field, value: 12 }, Const { destination: Relative(6), bit_size: Field, value: 30 }, Const { destination: Relative(7), bit_size: Field, value: 70 }, Const { destination: Relative(12), bit_size: Field, value: 66 }, Const { destination: Relative(16), bit_size: Field, value: 130 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 7 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(22) }, Store { destination_pointer: Relative(24), source: Relative(4) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(6) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(7) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(16) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32841) }, Load { destination: Relative(7), source_pointer: Relative(3) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(7) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 6072 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(7) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6076 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 9722 }, Jump { location: 6079 }, Load { destination: Relative(3), source_pointer: Relative(6) }, JumpIf { condition: Relative(3), location: 6082 }, Call { location: 11799 }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(12) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Const { destination: Relative(12), bit_size: Field, value: 42 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(3) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, JumpIf { condition: Relative(22), location: 6136 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6143 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, Load { destination: Relative(28), source_pointer: Relative(16) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6157 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32869) }, Mov { destination: Relative(30), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(32), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(33), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(34), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(34), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Relative(36), source: Relative(35) }, Store { destination_pointer: Relative(36), source: Relative(4) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, Store { destination_pointer: Relative(30), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Store { destination_pointer: Relative(32), source: Direct(32842) }, Store { destination_pointer: Relative(33), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6197 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 9692 }, Jump { location: 6200 }, Load { destination: Relative(24), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(28), source_pointer: Relative(32) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(35), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(29) }, Not { destination: Relative(35), source: Relative(35), bit_size: U1 }, JumpIf { condition: Relative(35), location: 6209 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(35), size: Relative(36) }, output: HeapArray { pointer: Relative(37), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(30), source: Relative(24) }, Store { destination_pointer: Relative(31), source: Relative(29) }, Store { destination_pointer: Relative(32), source: Relative(28) }, Store { destination_pointer: Relative(33), source: Direct(32841) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Cast { destination: Relative(28), source: Relative(24), bit_size: Integer(U32) }, Cast { destination: Relative(26), source: Relative(28), bit_size: Field }, Cast { destination: Relative(24), source: Relative(26), bit_size: Integer(U32) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 6234 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6238 }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, JumpIf { condition: Relative(26), location: 6241 }, Jump { location: 6306 }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Not { destination: Relative(29), source: Relative(29), bit_size: U1 }, JumpIf { condition: Relative(29), location: 6247 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6257 }, BinaryIntOp { destination: Relative(32), op: Div, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(32), rhs: Relative(1) }, JumpIf { condition: Relative(31), location: 6257 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(26) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(29) }, JumpIf { condition: Relative(30), location: 6261 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Relative(24), rhs: Relative(29) }, JumpIf { condition: Relative(30), location: 6266 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(29), rhs: Relative(21) }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Sub, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, BinaryIntOp { destination: Relative(29), op: LessThan, bit_size: U32, lhs: Relative(26), rhs: Relative(21) }, JumpIf { condition: Relative(29), location: 6272 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Direct(32844) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Load { destination: Relative(26), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32843) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(29), source_pointer: Relative(34) }, Not { destination: Relative(30), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U1, lhs: Relative(30), rhs: Relative(26) }, JumpIf { condition: Relative(29), location: 6296 }, Jump { location: 6300 }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(31), rhs: Relative(4) }, JumpIf { condition: Relative(26), location: 6303 }, Jump { location: 6299 }, Jump { location: 6300 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(26) }, Jump { location: 6238 }, Store { destination_pointer: Relative(22), source: Direct(32841) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Jump { location: 6306 }, Load { destination: Relative(1), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, JumpIf { condition: Relative(1), location: 6310 }, Jump { location: 6318 }, JumpIf { condition: Relative(1), location: 6313 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, BinaryFieldOp { destination: Relative(1), op: Equals, lhs: Relative(16), rhs: Relative(12) }, JumpIf { condition: Relative(1), location: 6317 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, Jump { location: 6318 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6325 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32840) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32869) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(4) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Direct(32842) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6365 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9662 }, Jump { location: 6368 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6377 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(22), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6404 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6408 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6411 }, Jump { location: 6519 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6419 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6429 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6429 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6433 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6438 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6444 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6468 }, Jump { location: 6472 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6475 }, Jump { location: 6471 }, Jump { location: 6472 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6408 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 6481 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(31) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 6515 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6519 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6527 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 6533 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(24) } }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6539 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(24), source: Relative(16) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32840) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Direct(32869) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(4) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(16), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6579 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9632 }, Jump { location: 6582 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6591 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 6618 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6622 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6625 }, Jump { location: 6733 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6633 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6643 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6643 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6647 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6652 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6658 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6682 }, Jump { location: 6686 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6689 }, Jump { location: 6685 }, Jump { location: 6686 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6622 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 6695 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(4) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Store { destination_pointer: Relative(24), source: Relative(31) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(21) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(4) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(4), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 6729 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Store { destination_pointer: Relative(3), source: Relative(4) }, Jump { location: 6733 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(16), source_pointer: Relative(4) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6741 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32838) }, JumpIf { condition: Relative(16), location: 6747 }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(22) } }, Load { destination: Relative(12), source_pointer: Relative(4) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 6753 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(12) }, Const { destination: Relative(4), bit_size: Field, value: 1 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(12) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6774 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Direct(32838) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U1, lhs: Relative(24), rhs: Direct(32837) }, JumpIf { condition: Relative(22), location: 6781 }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(27) } }, Load { destination: Relative(22), source_pointer: Relative(12) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6787 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(22) }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32869) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(32), source: Relative(4) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, Store { destination_pointer: Relative(22), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(12) }, Store { destination_pointer: Relative(28), source: Direct(32842) }, Store { destination_pointer: Relative(29), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6827 }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(12), location: 9602 }, Jump { location: 6830 }, Load { destination: Relative(12), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(16) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 6839 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(24) }, Mov { destination: Relative(24), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(24), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(27), source: Relative(24) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(29), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Load { destination: Relative(12), source_pointer: Relative(16) }, Cast { destination: Relative(21), source: Relative(12), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(21), bit_size: Field }, Cast { destination: Relative(12), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6866 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 6870 }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 6873 }, Jump { location: 6981 }, Load { destination: Relative(21), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Not { destination: Relative(27), source: Relative(27), bit_size: U1 }, JumpIf { condition: Relative(27), location: 6881 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 6891 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, BinaryIntOp { destination: Relative(29), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, JumpIf { condition: Relative(29), location: 6891 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6895 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(27), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(28), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, JumpIf { condition: Relative(28), location: 6900 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, BinaryIntOp { destination: Relative(29), op: Mul, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(27), rhs: Relative(29) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, JumpIf { condition: Relative(27), location: 6906 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(21) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(30) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(34), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(34) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(30) }, Load { destination: Relative(32), source_pointer: Relative(34) }, Not { destination: Relative(22), source: Relative(32), bit_size: U1 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 6930 }, Jump { location: 6934 }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(29), rhs: Relative(4) }, JumpIf { condition: Relative(22), location: 6937 }, Jump { location: 6933 }, Jump { location: 6934 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 6870 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 6943 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(27) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(12), source: Direct(32772) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(29) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(12) }, Call { location: 11625 }, Mov { destination: Relative(22), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Store { destination_pointer: Relative(26), source: Relative(31) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(22) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 6977 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(12) }, Jump { location: 6981 }, Load { destination: Relative(12), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(12) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 6989 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Direct(32838) }, JumpIf { condition: Relative(21), location: 6995 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(24) } }, Load { destination: Relative(16), source_pointer: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7001 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(16) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(4) }, Mov { destination: Relative(31), source: Relative(15) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Field, value: 4 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(9) }, Mov { destination: Relative(31), source: Relative(12) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(2) }, Mov { destination: Relative(31), source: Relative(13) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7042 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(2), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, JumpIf { condition: Relative(2), location: 7048 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(13) } }, Const { destination: Relative(2), bit_size: Integer(U32), value: 26 }, Mov { destination: Relative(26), source: Direct(0) }, Mov { destination: Relative(27), source: Relative(6) }, Mov { destination: Relative(28), source: Relative(7) }, Mov { destination: Relative(29), source: Relative(3) }, Mov { destination: Relative(30), source: Relative(9) }, Mov { destination: Relative(31), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(2) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7066 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 7072 }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(26) } }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7078 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(12) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(12) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32869) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Mov { destination: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(4) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, Store { destination_pointer: Relative(31), source: Direct(32840) }, Store { destination_pointer: Relative(12), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(2) }, Store { destination_pointer: Relative(27), source: Direct(32842) }, Store { destination_pointer: Relative(28), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7118 }, BinaryIntOp { destination: Relative(2), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(2), location: 9572 }, Jump { location: 7121 }, Load { destination: Relative(2), source_pointer: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(13) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7130 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(21) }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(21), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(24), size: Relative(29) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(12), source: Relative(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(28), source: Direct(32841) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Load { destination: Relative(2), source_pointer: Relative(12) }, Cast { destination: Relative(13), source: Relative(2), bit_size: Integer(U32) }, Cast { destination: Relative(12), source: Relative(13), bit_size: Field }, Cast { destination: Relative(2), source: Relative(12), bit_size: Integer(U32) }, Load { destination: Relative(12), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(16), source_pointer: Relative(13) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7157 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7161 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 7164 }, Jump { location: 7272 }, Load { destination: Relative(13), source_pointer: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Load { destination: Relative(21), source_pointer: Relative(16) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 7172 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, JumpIf { condition: Relative(24), location: 7182 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, JumpIf { condition: Relative(27), location: 7182 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 7186 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(2), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 7191 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, BinaryIntOp { destination: Relative(21), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(27) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 7197 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, Not { destination: Relative(16), source: Relative(30), bit_size: U1 }, BinaryIntOp { destination: Relative(28), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(24) }, JumpIf { condition: Relative(28), location: 7221 }, Jump { location: 7225 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(27), rhs: Relative(4) }, JumpIf { condition: Relative(16), location: 7228 }, Jump { location: 7224 }, Jump { location: 7225 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7161 }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(16), location: 7234 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(2), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(26) }, Store { destination_pointer: Relative(21), source: Relative(27) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(2) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Store { destination_pointer: Relative(22), source: Relative(29) }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(13), source: Direct(32772) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Direct(32841) }, BinaryIntOp { destination: Relative(2), op: Sub, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7268 }, Call { location: 11651 }, Store { destination_pointer: Relative(6), source: Relative(1) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Jump { location: 7272 }, Load { destination: Relative(2), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(2) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7280 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Direct(32843) }, JumpIf { condition: Relative(13), location: 7286 }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(21) } }, Load { destination: Relative(12), source_pointer: Relative(20) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7292 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), MemoryAddress(Direct(32842)), HeapArray(HeapArray { pointer: Relative(12), size: 37 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Simple(Integer(U32)), Array { value_types: [Simple(Integer(U8))], size: 37 }, Simple(Integer(U1))] }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(12) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7302 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(22) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(21) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(12) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(12) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(21) }, Mov { destination: Relative(21), source: Relative(12) }, Store { destination_pointer: Relative(21), source: Direct(32837) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32837) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Store { destination_pointer: Relative(7), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32838) }, Load { destination: Relative(12), source_pointer: Relative(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 7333 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Load { destination: Relative(22), source_pointer: Relative(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(22) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 7344 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(26) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32840) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Direct(32869) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Mov { destination: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(32), source: Relative(14) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Direct(32840) }, Store { destination_pointer: Relative(26), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Direct(32842) }, Store { destination_pointer: Relative(29), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7384 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 9542 }, Jump { location: 7387 }, Load { destination: Relative(1), source_pointer: Relative(26) }, Load { destination: Relative(13), source_pointer: Relative(27) }, Load { destination: Relative(16), source_pointer: Relative(28) }, Load { destination: Relative(20), source_pointer: Relative(13) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 7396 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(22), size: Relative(24) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(26), source: Relative(1) }, Store { destination_pointer: Relative(27), source: Relative(20) }, Store { destination_pointer: Relative(28), source: Relative(16) }, Store { destination_pointer: Relative(29), source: Direct(32841) }, Load { destination: Relative(1), source_pointer: Relative(2) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(1) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7416 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(12) }, JumpIf { condition: Relative(1), location: 7534 }, Jump { location: 7421 }, Const { destination: Relative(1), bit_size: Integer(U8), value: 55 }, Const { destination: Relative(2), bit_size: Integer(U8), value: 33 }, Mov { destination: Relative(12), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(12), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Relative(8) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(10) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(1) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(2) }, Const { destination: Relative(1), bit_size: Integer(U8), value: 57 }, Mov { destination: Relative(2), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 30 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(2), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, Mov { destination: Relative(13), source: Relative(8) }, Store { destination_pointer: Relative(13), source: Direct(32867) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32852) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32863) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32862) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32857) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32846) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32858) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32853) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32860) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32855) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32864) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32856) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(19) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(18) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32868) }, BinaryIntOp { destination: Relative(1), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(1), size: 19 }), HeapArray(HeapArray { pointer: Relative(8), size: 29 }), MemoryAddress(Direct(32837))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Array { value_types: [Simple(Integer(U8))], size: 29 }, Simple(Integer(U1))] }, Jump { location: 7701 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(8) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7542 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(12) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7553 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(20) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(20) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32840) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32869) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(21), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(27) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Mov { destination: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(28), source: Relative(14) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(26) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7593 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Direct(32836) }, JumpIf { condition: Relative(13), location: 9512 }, Jump { location: 7596 }, Load { destination: Relative(13), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(16) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 7605 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(26) }, Mov { destination: Relative(26), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(26), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(28), size: Relative(29) }, output: HeapArray { pointer: Relative(30), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(13) }, Store { destination_pointer: Relative(21), source: Relative(26) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Store { destination_pointer: Relative(24), source: Direct(32841) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Cast { destination: Relative(18), source: Relative(13), bit_size: Integer(U32) }, Cast { destination: Relative(16), source: Relative(18), bit_size: Field }, Cast { destination: Relative(13), source: Relative(16), bit_size: Integer(U32) }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7630 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7634 }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(16), location: 7637 }, Jump { location: 7696 }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7643 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Relative(1) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(1) }, JumpIf { condition: Relative(20), location: 7653 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, JumpIf { condition: Relative(22), location: 7653 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(1), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 7657 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(20), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, BinaryIntOp { destination: Relative(21), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(20) }, JumpIf { condition: Relative(21), location: 7662 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(21), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(20), rhs: Relative(22) }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(20), location: 7668 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Direct(32844) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32842) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32836) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(21) }, Load { destination: Relative(20), source_pointer: Relative(26) }, Not { destination: Relative(21), source: Relative(20), bit_size: U1 }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(16) }, JumpIf { condition: Relative(20), location: 7687 }, Jump { location: 7691 }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(22), rhs: Relative(14) }, JumpIf { condition: Relative(16), location: 7694 }, Jump { location: 7690 }, Jump { location: 7691 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 7634 }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Jump { location: 7696 }, Load { destination: Relative(1), source_pointer: Relative(12) }, JumpIf { condition: Relative(1), location: 7700 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Jump { location: 7701 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Load { destination: Relative(12), source_pointer: Relative(3) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7710 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(20) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(18) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(13) }, Load { destination: Relative(13), source_pointer: Relative(8) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(13) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7736 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7740 }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(13), location: 9461 }, Jump { location: 7743 }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7751 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 7777 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(24) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(26) }, Call { location: 23 }, Const { destination: Relative(24), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, Store { destination_pointer: Relative(22), source: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(12) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(13) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(20) } }, Load { destination: Relative(16), source_pointer: Relative(8) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7783 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(16) }, Const { destination: Relative(16), bit_size: Integer(U8), value: 45 }, Const { destination: Relative(21), bit_size: Integer(U8), value: 62 }, Mov { destination: Relative(22), source: Direct(1) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(24) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Relative(26), source: Relative(24) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(10) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(11) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(16) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(21) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32845) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32867) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32866) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32850) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32858) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32865) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32853) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32868) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 17 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(21), source: Direct(32867) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(10) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32857) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32860) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32852) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(19) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32854) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32857) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32853) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32858) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32852) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(5) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Direct(32868) }, Load { destination: Relative(5), source_pointer: Relative(11) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7867 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7871 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9414 }, Jump { location: 7874 }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 7880 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(16) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 7906 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7910 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9370 }, Jump { location: 7913 }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Load { destination: Relative(13), source_pointer: Relative(10) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 7921 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, JumpIf { condition: Relative(13), location: 7947 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 83 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 6693878053340631133 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 79 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 79 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(12) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(5) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Load { destination: Relative(13), source_pointer: Relative(10) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 7953 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(19), source: Relative(18) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32840) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Direct(32869) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 7974 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 7982 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(18) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 7986 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, JumpIf { condition: Relative(14), location: 9150 }, Jump { location: 7989 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(14) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32838) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(8) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8013 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(5) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8017 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 9106 }, Jump { location: 8020 }, Load { destination: Relative(2), source_pointer: Relative(10) }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 8028 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(12) }, JumpIf { condition: Relative(8), location: 8054 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 85 }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 85 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(14) }, IndirectConst { destination_pointer: Relative(16), bit_size: Integer(U64), value: 9965974553718638037 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 81 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(16) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 81 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(18) }, Store { destination_pointer: Relative(16), source: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(14), size: Relative(13) } }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(8) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 8060 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(8), bit_size: Integer(U8), value: 70 }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 20 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(16), source: Relative(14) }, Store { destination_pointer: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32861) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32860) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32852) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32845) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32867) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32866) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32850) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32858) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32865) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32853) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32868) }, Load { destination: Relative(8), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8112 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(8) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8116 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(8), location: 9078 }, Jump { location: 8119 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(3) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 8128 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(10) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(18), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Not { destination: Relative(18), source: Relative(18), bit_size: U1 }, JumpIf { condition: Relative(18), location: 8145 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(20) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(18) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(18) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32838) }, Mov { destination: Relative(19), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(14) }, Load { destination: Relative(14), source_pointer: Relative(5) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(14) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 8171 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(14) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8175 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(11), location: 9027 }, Jump { location: 8178 }, Load { destination: Relative(2), source_pointer: Relative(18) }, Load { destination: Relative(5), source_pointer: Relative(19) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8186 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 8212 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(11) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(18), source_pointer: Relative(5) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 8247 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(18) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8251 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 9000 }, Jump { location: 8254 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8266 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(19) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(18) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32838) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(11) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 8292 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8296 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(11), location: 8949 }, Jump { location: 8299 }, Load { destination: Relative(2), source_pointer: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(18) }, Load { destination: Relative(11), source_pointer: Relative(5) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 8307 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 8333 }, Const { destination: Relative(16), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, Mov { destination: Relative(19), source: Relative(18) }, IndirectConst { destination_pointer: Relative(19), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(20) }, Mov { destination: Direct(32772), source: Relative(19) }, Mov { destination: Direct(32773), source: Relative(21) }, Call { location: 23 }, Const { destination: Relative(20), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, Store { destination_pointer: Relative(19), source: Direct(32843) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(8) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(19), source: Relative(2) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(18), size: Relative(16) } }, Const { destination: Relative(11), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(8), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(11) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, Mov { destination: Relative(16), source: Relative(11) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32837) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(8) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Direct(32838) }, Load { destination: Relative(17), source_pointer: Relative(5) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(17) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 8368 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(17) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8372 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(14), location: 8923 }, Jump { location: 8375 }, Load { destination: Relative(2), source_pointer: Relative(11) }, Load { destination: Relative(5), source_pointer: Relative(16) }, Load { destination: Relative(8), source_pointer: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(2) }, Store { destination_pointer: Relative(12), source: Relative(5) }, Store { destination_pointer: Relative(13), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(8) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 8387 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Const { destination: Relative(5), bit_size: Field, value: 10944121435919637611123202872628637544274182200208017171849102093287904247809 }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8392 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(8), location: 8850 }, Jump { location: 8395 }, Load { destination: Relative(2), source_pointer: Relative(6) }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(5) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 8403 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(8) }, Mov { destination: Relative(1), source: Direct(32838) }, Jump { location: 8407 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(5), location: 8767 }, Jump { location: 8410 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(5), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(5) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(3) }, IndirectConst { destination_pointer: Relative(1), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, Mov { destination: Relative(3), source: Relative(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32840) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32839) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Direct(32837) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Direct(32842) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(1) }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(1), source: Direct(32838) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 4 }, Const { destination: Relative(8), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(7) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(6) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(7) }, Mov { destination: Relative(7), source: Relative(6) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32840) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32839) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32842) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32838) }, Const { destination: Relative(8), bit_size: Integer(U64), value: 2 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 11 }, Mov { destination: Relative(11), source: Direct(0) }, Mov { destination: Relative(12), source: Relative(2) }, Mov { destination: Relative(13), source: Relative(3) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(4) }, Mov { destination: Relative(16), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(10), bit_size: Integer(U64), value: 4 }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(2) }, Mov { destination: Relative(14), source: Relative(3) }, Mov { destination: Relative(15), source: Relative(1) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(6) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(11) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 10 }, Mov { destination: Relative(10), source: Direct(0) }, Mov { destination: Relative(11), source: Relative(6) }, Mov { destination: Relative(12), source: Relative(7) }, Mov { destination: Relative(13), source: Relative(5) }, Mov { destination: Relative(14), source: Relative(4) }, Mov { destination: Relative(15), source: Relative(8) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(9) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(2), source_pointer: Relative(3) }, Load { destination: Relative(3), source_pointer: Relative(1) }, Load { destination: Relative(1), source_pointer: Relative(6) }, Load { destination: Relative(6), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Load { destination: Relative(8), source_pointer: Relative(2) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 8525 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(8) }, Load { destination: Relative(8), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Not { destination: Relative(11), source: Relative(11), bit_size: U1 }, JumpIf { condition: Relative(11), location: 8533 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(8) }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(3), rhs: Relative(7) }, JumpIf { condition: Relative(8), location: 8538 }, Jump { location: 8558 }, Store { destination_pointer: Relative(5), source: Direct(32841) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(9), source: Relative(8) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32840) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32869) }, Mov { destination: Relative(3), source: Direct(32838) }, Jump { location: 8554 }, BinaryIntOp { destination: Relative(8), op: LessThan, bit_size: U32, lhs: Relative(3), rhs: Relative(4) }, JumpIf { condition: Relative(8), location: 8563 }, Jump { location: 8557 }, Jump { location: 8558 }, Load { destination: Relative(1), source_pointer: Relative(5) }, JumpIf { condition: Relative(1), location: 8562 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Relative(2) } }, Return, JumpIf { condition: Relative(8), location: 8565 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(3), rhs: Direct(32844) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(10) }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(10), source_pointer: Relative(5) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U1, lhs: Relative(10), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 8591 }, Jump { location: 8734 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Direct(32837) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32839) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 8603 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(13) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(17), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(18), source: Direct(1) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(19) }, IndirectConst { destination_pointer: Relative(18), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Mov { destination: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(20), source: Relative(11) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Direct(32840) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Store { destination_pointer: Relative(15), source: Relative(7) }, Store { destination_pointer: Relative(16), source: Direct(32842) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 8630 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, JumpIf { condition: Relative(14), location: 8737 }, Jump { location: 8633 }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(15) }, Load { destination: Relative(19), source_pointer: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(18) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(22), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(22), source: Relative(22), bit_size: U1 }, JumpIf { condition: Relative(22), location: 8642 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, IndirectConst { destination_pointer: Relative(20), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(22), size: Relative(23) }, output: HeapArray { pointer: Relative(24), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(13), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(20) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(17), source: Direct(32841) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(32842) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Cast { destination: Relative(15), source: Relative(13), bit_size: Integer(U32) }, Cast { destination: Relative(14), source: Relative(15), bit_size: Field }, Cast { destination: Relative(13), source: Relative(14), bit_size: Integer(U32) }, Mov { destination: Relative(8), source: Direct(32838) }, Jump { location: 8663 }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(1) }, JumpIf { condition: Relative(14), location: 8666 }, Jump { location: 8723 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(8), rhs: Relative(8) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 8674 }, BinaryIntOp { destination: Relative(18), op: Div, bit_size: U32, lhs: Relative(14), rhs: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(8) }, JumpIf { condition: Relative(17), location: 8674 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(8), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 8678 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(14) }, BinaryIntOp { destination: Relative(16), op: LessThanEquals, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, JumpIf { condition: Relative(16), location: 8683 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(15), rhs: Relative(1) }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(1) }, BinaryIntOp { destination: Relative(14), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Relative(17) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(1) }, JumpIf { condition: Relative(15), location: 8689 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(15) }, Load { destination: Relative(14), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 8713 }, Jump { location: 8717 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(17), rhs: Relative(11) }, JumpIf { condition: Relative(14), location: 8720 }, Jump { location: 8716 }, Jump { location: 8717 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(14) }, Jump { location: 8663 }, Store { destination_pointer: Relative(9), source: Direct(32841) }, Store { destination_pointer: Relative(10), source: Relative(18) }, Jump { location: 8723 }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(9), source_pointer: Relative(10) }, JumpIf { condition: Relative(8), location: 8729 }, Jump { location: 8727 }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Jump { location: 8734 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U64, lhs: Relative(12), rhs: Relative(9) }, JumpIf { condition: Relative(8), location: 8734 }, Jump { location: 8732 }, Store { destination_pointer: Relative(5), source: Direct(32837) }, Jump { location: 8734 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Mov { destination: Relative(3), source: Relative(8) }, Jump { location: 8554 }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(18), op: LessThan, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, JumpIf { condition: Relative(18), location: 8741 }, Jump { location: 8764 }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(18), source_pointer: Relative(15) }, Load { destination: Relative(19), source_pointer: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(8) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(8) }, Load { destination: Relative(22), source_pointer: Relative(24) }, BinaryFieldOp { destination: Relative(23), op: Add, lhs: Relative(21), rhs: Relative(22) }, Mov { destination: Direct(32771), source: Relative(18) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(21), source: Direct(32773) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(8) }, Store { destination_pointer: Relative(24), source: Relative(23) }, Store { destination_pointer: Relative(13), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(17), source: Relative(20) }, Jump { location: 8764 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Mov { destination: Relative(8), source: Relative(14) }, Jump { location: 8630 }, Load { destination: Relative(5), source_pointer: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(5) }, JumpIf { condition: Relative(10), location: 8772 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(14) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(13) }, Load { destination: Relative(15), source_pointer: Relative(17) }, Not { destination: Relative(8), source: Relative(15), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 8796 }, Jump { location: 8847 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(12), rhs: Direct(32840) }, Not { destination: Relative(13), source: Relative(8), bit_size: U1 }, BinaryFieldOp { destination: Relative(8), op: Equals, lhs: Relative(14), rhs: Direct(32840) }, Not { destination: Relative(15), source: Relative(8), bit_size: U1 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U1, lhs: Relative(13), rhs: Relative(15) }, JumpIf { condition: Relative(8), location: 8847 }, Jump { location: 8803 }, Load { destination: Relative(8), source_pointer: Relative(6) }, Load { destination: Relative(13), source_pointer: Relative(7) }, Load { destination: Relative(15), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(16), op: Sub, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(15) }, JumpIf { condition: Relative(17), location: 8810 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, JumpIf { condition: Relative(15), location: 8813 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(13) }, Call { location: 11625 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(5) }, Store { destination_pointer: Relative(18), source: Relative(10) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 11625 }, Mov { destination: Relative(5), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Store { destination_pointer: Relative(13), source: Relative(12) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(5) }, Call { location: 11625 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Store { destination_pointer: Relative(13), source: Relative(14) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(11) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(5) }, Store { destination_pointer: Relative(13), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(8) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(3), source: Relative(16) }, Jump { location: 8847 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 8407 }, Load { destination: Relative(8), source_pointer: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(14), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(8) }, JumpIf { condition: Relative(14), location: 8855 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(8), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(8) }, Load { destination: Relative(14), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(17) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(32836) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(17) }, Load { destination: Relative(19), source_pointer: Relative(21) }, Not { destination: Relative(11), source: Relative(19), bit_size: U1 }, BinaryIntOp { destination: Relative(17), op: Mul, bit_size: U1, lhs: Relative(11), rhs: Relative(14) }, JumpIf { condition: Relative(17), location: 8879 }, Jump { location: 8920 }, BinaryFieldOp { destination: Relative(11), op: Mul, lhs: Relative(18), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(10) }, Load { destination: Relative(17), source_pointer: Relative(12) }, Load { destination: Relative(18), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(14) }, JumpIf { condition: Relative(19), location: 8886 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(17) }, Call { location: 11625 }, Mov { destination: Relative(19), source: Direct(32772) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(8) }, Store { destination_pointer: Relative(21), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(19) }, Call { location: 11625 }, Mov { destination: Relative(8), source: Direct(32772) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(8) }, Call { location: 11625 }, Mov { destination: Relative(15), source: Direct(32772) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(11) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(15) }, Call { location: 11625 }, Mov { destination: Relative(11), source: Direct(32772) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(8) }, Store { destination_pointer: Relative(17), source: Direct(32837) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(12), source: Relative(11) }, Store { destination_pointer: Relative(13), source: Relative(18) }, Jump { location: 8920 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(8) }, Jump { location: 8392 }, JumpIf { condition: Relative(14), location: 8925 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(17), rhs: Relative(15) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 19 }, Mov { destination: Relative(19), source: Direct(0) }, Mov { destination: Relative(20), source: Relative(11) }, Mov { destination: Relative(21), source: Relative(16) }, Mov { destination: Relative(22), source: Relative(8) }, Mov { destination: Relative(23), source: Relative(18) }, Mov { destination: Relative(24), source: Relative(14) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(17) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 8372 }, JumpIf { condition: Relative(11), location: 8951 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(19) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Load { destination: Relative(11), source_pointer: Relative(23) }, Not { destination: Relative(19), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(19), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 8975 }, Jump { location: 8997 }, Load { destination: Relative(11), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(19), source_pointer: Relative(14) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(19) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 8983 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(23), source: Direct(32773) }, Mov { destination: Relative(24), source: Direct(32774) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(16), source: Relative(19) }, Store { destination_pointer: Relative(18), source: Relative(23) }, Jump { location: 8997 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 8296 }, JumpIf { condition: Relative(14), location: 9002 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(14) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(19) }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryFieldOp { destination: Relative(19), op: Add, lhs: Relative(18), rhs: Relative(4) }, BinaryFieldOp { destination: Relative(18), op: Mul, lhs: Relative(14), rhs: Relative(15) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 20 }, Mov { destination: Relative(20), source: Direct(0) }, Mov { destination: Relative(21), source: Relative(11) }, Mov { destination: Relative(22), source: Relative(16) }, Mov { destination: Relative(23), source: Relative(8) }, Mov { destination: Relative(24), source: Relative(19) }, Mov { destination: Relative(25), source: Relative(18) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(14) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 8251 }, JumpIf { condition: Relative(11), location: 9029 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(11), source_pointer: Relative(23) }, Not { destination: Relative(16), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(11), location: 9053 }, Jump { location: 9075 }, Load { destination: Relative(11), source_pointer: Relative(18) }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9061 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(23), source: Direct(32773) }, Mov { destination: Relative(24), source: Direct(32774) }, Store { destination_pointer: Relative(24), source: Relative(20) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(21) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(23) }, Jump { location: 9075 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(11) }, Jump { location: 8175 }, JumpIf { condition: Relative(8), location: 9080 }, Call { location: 11619 }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(13) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(14), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Not { destination: Relative(14), source: Relative(14), bit_size: U1 }, JumpIf { condition: Relative(14), location: 9090 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(10) }, Load { destination: Relative(10), source_pointer: Relative(11) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(10) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 9098 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(10), size: 19 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 19 }, Simple(Integer(U32)), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(8) }, Jump { location: 8116 }, JumpIf { condition: Relative(5), location: 9108 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(14), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(5), location: 9127 }, Jump { location: 9147 }, Load { destination: Relative(5), source_pointer: Relative(10) }, Load { destination: Relative(14), source_pointer: Relative(13) }, Load { destination: Relative(16), source_pointer: Relative(14) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9135 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(20), source: Direct(32773) }, Mov { destination: Relative(21), source: Direct(32774) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Store { destination_pointer: Relative(10), source: Relative(16) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Jump { location: 9147 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 8017 }, JumpIf { condition: Relative(14), location: 9152 }, Call { location: 11619 }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(1) }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(18), source_pointer: Relative(8) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9162 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(18) }, Mov { destination: Relative(18), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(18), source: Direct(32840) }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9173 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, Load { destination: Relative(20), source_pointer: Relative(13) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(20) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 9181 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Relative(20) }, Mov { destination: Relative(20), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(14) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(20), source: Relative(28) }, Store { destination_pointer: Relative(24), source: Relative(13) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(16), source: Direct(32838) }, Jump { location: 9208 }, BinaryIntOp { destination: Relative(19), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, JumpIf { condition: Relative(19), location: 9340 }, Jump { location: 9211 }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(21) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 9220 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(28) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(30) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(30), size: Relative(31) }, output: HeapArray { pointer: Relative(32), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, Load { destination: Relative(19), source_pointer: Relative(20) }, Cast { destination: Relative(21), source: Relative(19), bit_size: Integer(U32) }, Cast { destination: Relative(20), source: Relative(21), bit_size: Field }, Cast { destination: Relative(19), source: Relative(20), bit_size: Integer(U32) }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9245 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, Mov { destination: Relative(16), source: Direct(32838) }, Jump { location: 9249 }, BinaryIntOp { destination: Relative(20), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(2) }, JumpIf { condition: Relative(20), location: 9252 }, Jump { location: 9316 }, Load { destination: Relative(20), source_pointer: Relative(8) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(21), rhs: Relative(20) }, Not { destination: Relative(23), source: Relative(23), bit_size: U1 }, JumpIf { condition: Relative(23), location: 9258 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Mul, bit_size: U32, lhs: Relative(16), rhs: Relative(16) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(23), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(16) }, JumpIf { condition: Relative(23), location: 9268 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(16) }, JumpIf { condition: Relative(26), location: 9268 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(20) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(16), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 9272 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(20), op: Div, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(20) }, BinaryIntOp { destination: Relative(24), op: LessThanEquals, bit_size: U32, lhs: Relative(19), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 9277 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(23), rhs: Relative(2) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Relative(2) }, BinaryIntOp { destination: Relative(20), op: Sub, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, JumpIf { condition: Relative(23), location: 9283 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(20), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Load { destination: Relative(20), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(29) }, Not { destination: Relative(24), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(24), rhs: Relative(20) }, JumpIf { condition: Relative(23), location: 9307 }, Jump { location: 9311 }, BinaryFieldOp { destination: Relative(20), op: Equals, lhs: Relative(26), rhs: Relative(14) }, JumpIf { condition: Relative(20), location: 9314 }, Jump { location: 9310 }, Jump { location: 9311 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Relative(16), source: Relative(20) }, Jump { location: 9249 }, Store { destination_pointer: Relative(18), source: Relative(27) }, Jump { location: 9316 }, Load { destination: Relative(16), source_pointer: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(18) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9323 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Load { destination: Relative(18), source_pointer: Relative(11) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(18) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 9331 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(18), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(18), size: 16 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(14)), MemoryAddress(Relative(16)), HeapArray(HeapArray { pointer: Relative(21), size: 16 }), HeapArray(HeapArray { pointer: Relative(23), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 7986 }, Load { destination: Relative(19), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(16), rhs: Relative(19) }, JumpIf { condition: Relative(21), location: 9344 }, Jump { location: 9367 }, Load { destination: Relative(19), source_pointer: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(16) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(20), source: Relative(19) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(23) }, Store { destination_pointer: Relative(27), source: Relative(28) }, Jump { location: 9367 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Mov { destination: Relative(16), source: Relative(19) }, Jump { location: 9208 }, JumpIf { condition: Relative(5), location: 9372 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32836) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(20) }, Not { destination: Relative(16), source: Relative(5), bit_size: U1 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(10) }, JumpIf { condition: Relative(5), location: 9391 }, Jump { location: 9411 }, Load { destination: Relative(5), source_pointer: Relative(13) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Load { destination: Relative(16), source_pointer: Relative(10) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9399 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(10) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(20), source: Direct(32773) }, Mov { destination: Relative(21), source: Direct(32774) }, Store { destination_pointer: Relative(21), source: Relative(18) }, Store { destination_pointer: Relative(13), source: Relative(16) }, Store { destination_pointer: Relative(14), source: Relative(20) }, Jump { location: 9411 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 7910 }, Load { destination: Relative(5), source_pointer: Relative(14) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(5) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 9420 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(5), location: 9425 }, Jump { location: 9458 }, JumpIf { condition: Relative(5), location: 9427 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(5), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(5) }, Load { destination: Relative(10), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(5), source_pointer: Relative(19) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 9443 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(11) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(19), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 9451 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(11), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 16 }), MemoryAddress(Direct(32843)), MemoryAddress(Relative(10)), MemoryAddress(Relative(5)), HeapArray(HeapArray { pointer: Relative(20), size: 16 }), HeapArray(HeapArray { pointer: Relative(21), size: 16 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 16 }, Array { value_types: [Simple(Integer(U8))], size: 16 }, Simple(Integer(U1))] }, Jump { location: 9458 }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(5) }, Jump { location: 7871 }, JumpIf { condition: Relative(13), location: 9463 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(13) }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32842) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(20) }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(32836) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(8), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Not { destination: Relative(20), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U1, lhs: Relative(20), rhs: Relative(14) }, JumpIf { condition: Relative(13), location: 9487 }, Jump { location: 9509 }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(18) }, Load { destination: Relative(20), source_pointer: Relative(14) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(20) }, Not { destination: Relative(26), source: Relative(26), bit_size: U1 }, JumpIf { condition: Relative(26), location: 9495 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(20) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(14) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(26), source: Direct(32773) }, Mov { destination: Relative(27), source: Direct(32774) }, Store { destination_pointer: Relative(27), source: Relative(21) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(16), source: Relative(20) }, Store { destination_pointer: Relative(18), source: Relative(26) }, Jump { location: 9509 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7740 }, Load { destination: Relative(13), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 9516 }, Jump { location: 9539 }, Load { destination: Relative(13), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(18), source_pointer: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Add, lhs: Relative(27), rhs: Relative(28) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(27), source: Direct(32773) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Store { destination_pointer: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(20), source: Relative(13) }, Store { destination_pointer: Relative(21), source: Relative(27) }, Store { destination_pointer: Relative(22), source: Relative(18) }, Store { destination_pointer: Relative(24), source: Relative(26) }, Jump { location: 9539 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7593 }, Load { destination: Relative(13), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(13) }, JumpIf { condition: Relative(16), location: 9546 }, Jump { location: 9569 }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(20), source_pointer: Relative(28) }, Load { destination: Relative(21), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(31) }, BinaryFieldOp { destination: Relative(30), op: Add, lhs: Relative(22), rhs: Relative(24) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Store { destination_pointer: Relative(31), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(13) }, Store { destination_pointer: Relative(27), source: Relative(22) }, Store { destination_pointer: Relative(28), source: Relative(20) }, Store { destination_pointer: Relative(29), source: Relative(21) }, Jump { location: 9569 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(13) }, Jump { location: 7384 }, Load { destination: Relative(2), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(2) }, JumpIf { condition: Relative(13), location: 9576 }, Jump { location: 9599 }, Load { destination: Relative(2), source_pointer: Relative(12) }, Load { destination: Relative(13), source_pointer: Relative(26) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Add, lhs: Relative(22), rhs: Relative(24) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Store { destination_pointer: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(12), source: Relative(2) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(16) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Jump { location: 9599 }, BinaryIntOp { destination: Relative(2), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(2) }, Jump { location: 7118 }, Load { destination: Relative(12), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(16), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(16), location: 9606 }, Jump { location: 9629 }, Load { destination: Relative(12), source_pointer: Relative(22) }, Load { destination: Relative(16), source_pointer: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(26), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(16) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(22), source: Relative(12) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(21) }, Store { destination_pointer: Relative(29), source: Relative(24) }, Jump { location: 9629 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6827 }, Load { destination: Relative(12), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 9636 }, Jump { location: 9659 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(22) }, Store { destination_pointer: Relative(27), source: Relative(28) }, Jump { location: 9659 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6579 }, Load { destination: Relative(12), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(12) }, JumpIf { condition: Relative(21), location: 9666 }, Jump { location: 9689 }, Load { destination: Relative(12), source_pointer: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(1) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryFieldOp { destination: Relative(31), op: Add, lhs: Relative(29), rhs: Relative(30) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(1) }, Store { destination_pointer: Relative(32), source: Relative(31) }, Store { destination_pointer: Relative(16), source: Relative(12) }, Store { destination_pointer: Relative(22), source: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Jump { location: 9689 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(12) }, Jump { location: 6365 }, Load { destination: Relative(24), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(26), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(24) }, JumpIf { condition: Relative(26), location: 9696 }, Jump { location: 9719 }, Load { destination: Relative(24), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(31) }, Load { destination: Relative(28), source_pointer: Relative(32) }, Load { destination: Relative(29), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(36), rhs: Relative(1) }, Load { destination: Relative(35), source_pointer: Relative(37) }, BinaryFieldOp { destination: Relative(36), op: Add, lhs: Relative(34), rhs: Relative(35) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(34), source: Direct(32773) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(37), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(1) }, Store { destination_pointer: Relative(37), source: Relative(36) }, Store { destination_pointer: Relative(30), source: Relative(24) }, Store { destination_pointer: Relative(31), source: Relative(34) }, Store { destination_pointer: Relative(32), source: Relative(28) }, Store { destination_pointer: Relative(33), source: Relative(29) }, Jump { location: 9719 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 6197 }, Load { destination: Relative(7), source_pointer: Relative(6) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(12) }, Load { destination: Relative(16), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(12) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(12), source_pointer: Relative(28) }, BinaryFieldOp { destination: Relative(22), op: Equals, lhs: Relative(16), rhs: Relative(26) }, BinaryFieldOp { destination: Relative(16), op: Equals, lhs: Relative(24), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U1, lhs: Relative(7), rhs: Relative(12) }, Store { destination_pointer: Relative(6), source: Relative(16) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(7) }, Jump { location: 6076 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(3) }, Load { destination: Relative(7), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(12) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(6) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(22), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(3) }, Store { destination_pointer: Relative(26), source: Relative(7) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(3), source: Direct(32773) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(12) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(6), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5748 }, JumpIf { condition: Relative(3), location: 9776 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(3) }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(3), source_pointer: Relative(28) }, Not { destination: Relative(22), source: Relative(3), bit_size: U1 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(21) }, JumpIf { condition: Relative(3), location: 9800 }, Jump { location: 9822 }, Load { destination: Relative(3), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, Load { destination: Relative(22), source_pointer: Relative(21) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(28), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Not { destination: Relative(28), source: Relative(28), bit_size: U1 }, JumpIf { condition: Relative(28), location: 9808 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(21), source: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(28), source: Direct(32773) }, Mov { destination: Relative(29), source: Direct(32774) }, Store { destination_pointer: Relative(29), source: Relative(24) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Relative(26) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(28) }, Jump { location: 9822 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 5677 }, JumpIf { condition: Relative(22), location: 9827 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(22) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(27) }, Load { destination: Relative(22), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(27), op: Mul, lhs: Relative(26), rhs: Relative(15) }, BinaryFieldOp { destination: Relative(26), op: Mul, lhs: Relative(22), rhs: Relative(15) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 28 }, Mov { destination: Relative(28), source: Direct(0) }, Mov { destination: Relative(29), source: Relative(21) }, Mov { destination: Relative(30), source: Relative(24) }, Mov { destination: Relative(31), source: Relative(16) }, Mov { destination: Relative(32), source: Relative(27) }, Mov { destination: Relative(33), source: Relative(26) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(22) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 5640 }, JumpIf { condition: Relative(21), location: 9854 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(21) }, Load { destination: Relative(22), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32843) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(21), source_pointer: Relative(31) }, Not { destination: Relative(27), source: Relative(21), bit_size: U1 }, BinaryIntOp { destination: Relative(21), op: Mul, bit_size: U1, lhs: Relative(27), rhs: Relative(22) }, JumpIf { condition: Relative(21), location: 9878 }, Jump { location: 9900 }, Load { destination: Relative(21), source_pointer: Relative(24) }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(22) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 9886 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(22) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(31), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(28) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(32), rhs: Direct(2) }, Store { destination_pointer: Relative(32), source: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(31) }, Jump { location: 9900 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 5564 }, Load { destination: Relative(16), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(1) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(22), rhs: Relative(24) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(26) }, Store { destination_pointer: Relative(12), source: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 5519 }, Load { destination: Relative(21), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(1) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(29), op: Equals, lhs: Relative(27), rhs: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(29) }, Store { destination_pointer: Relative(24), source: Relative(27) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 5378 }, JumpIf { condition: Relative(24), location: 9931 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(24), source_pointer: Relative(32) }, Not { destination: Relative(29), source: Relative(24), bit_size: U1 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(26) }, JumpIf { condition: Relative(24), location: 9950 }, Jump { location: 9970 }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 9958 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Store { destination_pointer: Relative(28), source: Relative(32) }, Jump { location: 9970 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 5036 }, JumpIf { condition: Relative(22), location: 9975 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(31) }, Not { destination: Relative(28), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(24) }, JumpIf { condition: Relative(22), location: 9994 }, Jump { location: 10014 }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(24) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10002 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(31), source: Direct(32773) }, Mov { destination: Relative(32), source: Direct(32774) }, Store { destination_pointer: Relative(32), source: Relative(29) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(31) }, Jump { location: 10014 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 4690 }, Load { destination: Relative(16), source_pointer: Relative(6) }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(22), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(22), location: 10022 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(16) }, Load { destination: Relative(22), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32836) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(27) }, Load { destination: Relative(29), source_pointer: Relative(31) }, Not { destination: Relative(21), source: Relative(29), bit_size: U1 }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(22) }, JumpIf { condition: Relative(27), location: 10046 }, Jump { location: 10087 }, BinaryFieldOp { destination: Relative(21), op: Mul, lhs: Relative(28), rhs: Relative(2) }, Load { destination: Relative(22), source_pointer: Relative(6) }, Load { destination: Relative(27), source_pointer: Relative(7) }, Load { destination: Relative(28), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(29), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(29), location: 10053 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(27) }, Call { location: 11625 }, Mov { destination: Relative(29), source: Direct(32772) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(16) }, Store { destination_pointer: Relative(31), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(29) }, Call { location: 11625 }, Mov { destination: Relative(16), source: Direct(32772) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(24) }, Store { destination_pointer: Relative(30), source: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(16) }, Call { location: 11625 }, Mov { destination: Relative(24), source: Direct(32772) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(26) }, Store { destination_pointer: Relative(29), source: Relative(21) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(24) }, Call { location: 11625 }, Mov { destination: Relative(21), source: Direct(32772) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(16) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(21) }, Store { destination_pointer: Relative(3), source: Relative(28) }, Jump { location: 10087 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 4648 }, JumpIf { condition: Relative(24), location: 10092 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(28) }, Load { destination: Relative(24), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(28), op: Mul, lhs: Relative(27), rhs: Relative(9) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 29 }, Mov { destination: Relative(29), source: Direct(0) }, Mov { destination: Relative(30), source: Relative(22) }, Mov { destination: Relative(31), source: Relative(26) }, Mov { destination: Relative(32), source: Relative(21) }, Mov { destination: Relative(33), source: Relative(28) }, Mov { destination: Relative(34), source: Relative(24) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(27) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 4629 }, JumpIf { condition: Relative(22), location: 10118 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(22), source_pointer: Relative(32) }, Not { destination: Relative(28), source: Relative(22), bit_size: U1 }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(24) }, JumpIf { condition: Relative(22), location: 10142 }, Jump { location: 10164 }, Load { destination: Relative(22), source_pointer: Relative(26) }, Load { destination: Relative(24), source_pointer: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(24) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10150 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(29) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(28) }, Store { destination_pointer: Relative(27), source: Relative(32) }, Jump { location: 10164 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(22) }, Jump { location: 4553 }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(22) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(22) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(22), source_pointer: Relative(30) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(24), rhs: Relative(28) }, BinaryFieldOp { destination: Relative(24), op: Equals, lhs: Relative(27), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(24) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 4449 }, Load { destination: Relative(21), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(1) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryFieldOp { destination: Relative(27), op: Equals, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(21), rhs: Relative(27) }, Store { destination_pointer: Relative(7), source: Relative(24) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(21) }, Jump { location: 4413 }, Load { destination: Relative(24), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Equals, lhs: Relative(26), rhs: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U1, lhs: Relative(24), rhs: Relative(28) }, Store { destination_pointer: Relative(7), source: Relative(26) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(24) }, Jump { location: 4383 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32843) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(3) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, Load { destination: Relative(28), source_pointer: Relative(7) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(29), source: Direct(32773) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(3) }, Store { destination_pointer: Relative(31), source: Relative(24) }, Mov { destination: Direct(32771), source: Relative(29) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 7 }, Call { location: 11715 }, Mov { destination: Relative(3), source: Direct(32773) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, Store { destination_pointer: Relative(28), source: Relative(27) }, Store { destination_pointer: Relative(7), source: Relative(3) }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 4066 }, JumpIf { condition: Relative(3), location: 10247 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(3) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32842) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(31) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Load { destination: Relative(3), source_pointer: Relative(32) }, Not { destination: Relative(28), source: Relative(3), bit_size: U1 }, BinaryIntOp { destination: Relative(3), op: Mul, bit_size: U1, lhs: Relative(28), rhs: Relative(27) }, JumpIf { condition: Relative(3), location: 10271 }, Jump { location: 10293 }, Load { destination: Relative(3), source_pointer: Relative(24) }, Load { destination: Relative(27), source_pointer: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(27) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(28) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10279 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(29) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(33), rhs: Direct(2) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(24), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(32) }, Jump { location: 10293 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 3818 }, JumpIf { condition: Relative(25), location: 10298 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32843) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Load { destination: Relative(25), source_pointer: Relative(32) }, Not { destination: Relative(29), source: Relative(25), bit_size: U1 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(26) }, JumpIf { condition: Relative(25), location: 10317 }, Jump { location: 10337 }, Load { destination: Relative(25), source_pointer: Relative(27) }, Load { destination: Relative(26), source_pointer: Relative(28) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(29) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 10325 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(26) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(32), source: Direct(32773) }, Mov { destination: Relative(33), source: Direct(32774) }, Store { destination_pointer: Relative(33), source: Relative(30) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Store { destination_pointer: Relative(28), source: Relative(32) }, Jump { location: 10337 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(25) }, Jump { location: 3305 }, JumpIf { condition: Relative(23), location: 10342 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(23) }, Load { destination: Relative(24), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Load { destination: Relative(23), source_pointer: Relative(30) }, Not { destination: Relative(27), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(27), rhs: Relative(24) }, JumpIf { condition: Relative(23), location: 10361 }, Jump { location: 10381 }, Load { destination: Relative(23), source_pointer: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(30), op: Equals, bit_size: U32, lhs: Relative(29), rhs: Relative(27) }, Not { destination: Relative(30), source: Relative(30), bit_size: U1 }, JumpIf { condition: Relative(30), location: 10369 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Store { destination_pointer: Relative(24), source: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(24) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 1 }, Call { location: 11737 }, Mov { destination: Relative(30), source: Direct(32773) }, Mov { destination: Relative(31), source: Direct(32774) }, Store { destination_pointer: Relative(31), source: Relative(28) }, Store { destination_pointer: Relative(25), source: Relative(27) }, Store { destination_pointer: Relative(26), source: Relative(30) }, Jump { location: 10381 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(23) }, Jump { location: 2788 }, Load { destination: Relative(3), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(17), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(3) }, JumpIf { condition: Relative(17), location: 10388 }, Jump { location: 10411 }, Load { destination: Relative(3), source_pointer: Relative(9) }, Load { destination: Relative(17), source_pointer: Relative(22) }, Load { destination: Relative(21), source_pointer: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(24) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(17) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(9), source: Relative(3) }, Store { destination_pointer: Relative(22), source: Relative(26) }, Store { destination_pointer: Relative(23), source: Relative(21) }, Store { destination_pointer: Relative(24), source: Relative(25) }, Jump { location: 10411 }, BinaryIntOp { destination: Relative(3), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(3) }, Jump { location: 2581 }, Load { destination: Relative(14), source_pointer: Relative(6) }, Load { destination: Relative(22), source_pointer: Relative(7) }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(14) }, JumpIf { condition: Relative(23), location: 10419 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(1), rhs: Direct(32844) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(14) }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(24) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(30) }, Not { destination: Relative(22), source: Relative(28), bit_size: U1 }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(23) }, JumpIf { condition: Relative(26), location: 10443 }, Jump { location: 10491 }, BinaryFieldOp { destination: Relative(22), op: Mul, lhs: Relative(25), rhs: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Equals, lhs: Relative(22), rhs: Relative(21) }, JumpIf { condition: Relative(26), location: 10491 }, Jump { location: 10447 }, Load { destination: Relative(22), source_pointer: Relative(6) }, Load { destination: Relative(26), source_pointer: Relative(7) }, Load { destination: Relative(28), source_pointer: Relative(9) }, BinaryIntOp { destination: Relative(29), op: Sub, bit_size: U32, lhs: Relative(28), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(30), op: LessThanEquals, bit_size: U32, lhs: Direct(32842), rhs: Relative(28) }, JumpIf { condition: Relative(30), location: 10454 }, Call { location: 11651 }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(22) }, JumpIf { condition: Relative(28), location: 10457 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(26) }, Call { location: 11625 }, Mov { destination: Relative(28), source: Direct(32772) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(31) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Relative(14) }, Store { destination_pointer: Relative(31), source: Relative(23) }, Mov { destination: Direct(32771), source: Relative(28) }, Call { location: 11625 }, Mov { destination: Relative(14), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, Store { destination_pointer: Relative(26), source: Relative(25) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(14) }, Call { location: 11625 }, Mov { destination: Relative(24), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(23) }, Store { destination_pointer: Relative(26), source: Relative(27) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(24) }, Call { location: 11625 }, Mov { destination: Relative(23), source: Direct(32772) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(14) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, Store { destination_pointer: Relative(6), source: Relative(22) }, Store { destination_pointer: Relative(7), source: Relative(23) }, Store { destination_pointer: Relative(9), source: Relative(29) }, Jump { location: 10491 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(14) }, Jump { location: 2528 }, JumpIf { condition: Relative(14), location: 10496 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U32, lhs: Relative(9), rhs: Direct(32844) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32843) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(23) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(16) }, Load { destination: Relative(14), source_pointer: Relative(23) }, Load { destination: Relative(16), source_pointer: Relative(13) }, Not { destination: Relative(22), source: Relative(14), bit_size: U1 }, BinaryIntOp { destination: Relative(14), op: Mul, bit_size: U1, lhs: Relative(22), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U1, lhs: Relative(16), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 10522 }, Jump { location: 10665 }, Mov { destination: Relative(15), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32837) }, Mov { destination: Relative(16), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Direct(32840) }, Load { destination: Relative(22), source_pointer: Relative(3) }, Const { destination: Relative(23), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(23), rhs: Relative(22) }, Not { destination: Relative(24), source: Relative(24), bit_size: U1 }, JumpIf { condition: Relative(24), location: 10534 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(3), source: Relative(22) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(24), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(28) }, IndirectConst { destination_pointer: Relative(27), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Mov { destination: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(29), source: Relative(17) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(29), source: Direct(32840) }, Store { destination_pointer: Relative(22), source: Relative(27) }, Store { destination_pointer: Relative(24), source: Relative(3) }, Store { destination_pointer: Relative(25), source: Direct(32842) }, Store { destination_pointer: Relative(26), source: Direct(32837) }, Mov { destination: Relative(14), source: Direct(32838) }, Jump { location: 10561 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Direct(32836) }, JumpIf { condition: Relative(23), location: 10668 }, Jump { location: 10564 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(27) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10573 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(27), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(31) }, IndirectConst { destination_pointer: Relative(29), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(31), size: Relative(32) }, output: HeapArray { pointer: Relative(33), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(29) }, Store { destination_pointer: Relative(25), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Direct(32841) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(32842) }, Load { destination: Relative(22), source_pointer: Relative(23) }, Cast { destination: Relative(24), source: Relative(22), bit_size: Integer(U32) }, Cast { destination: Relative(23), source: Relative(24), bit_size: Field }, Cast { destination: Relative(22), source: Relative(23), bit_size: Integer(U32) }, Mov { destination: Relative(14), source: Direct(32838) }, Jump { location: 10594 }, BinaryIntOp { destination: Relative(23), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(23), location: 10597 }, Jump { location: 10654 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(14) }, Const { destination: Relative(25), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(24), op: Equals, bit_size: U32, lhs: Relative(25), rhs: Relative(14) }, JumpIf { condition: Relative(24), location: 10605 }, BinaryIntOp { destination: Relative(27), op: Div, bit_size: U32, lhs: Relative(23), rhs: Relative(14) }, BinaryIntOp { destination: Relative(26), op: Equals, bit_size: U32, lhs: Relative(27), rhs: Relative(14) }, JumpIf { condition: Relative(26), location: 10605 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(14), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10609 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(23), op: Div, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, BinaryIntOp { destination: Relative(25), op: LessThanEquals, bit_size: U32, lhs: Relative(22), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 10614 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(25), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(6) }, BinaryIntOp { destination: Relative(26), op: Mul, bit_size: U32, lhs: Relative(25), rhs: Relative(6) }, BinaryIntOp { destination: Relative(23), op: Sub, bit_size: U32, lhs: Relative(24), rhs: Relative(26) }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(6) }, JumpIf { condition: Relative(24), location: 10620 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(23), rhs: Direct(32844) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(24) }, Load { destination: Relative(23), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32842) }, Const { destination: Relative(28), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(25) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32843) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(25) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(29) }, Not { destination: Relative(25), source: Relative(24), bit_size: U1 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U1, lhs: Relative(25), rhs: Relative(23) }, JumpIf { condition: Relative(24), location: 10644 }, Jump { location: 10648 }, BinaryFieldOp { destination: Relative(23), op: Equals, lhs: Relative(26), rhs: Relative(17) }, JumpIf { condition: Relative(23), location: 10651 }, Jump { location: 10647 }, Jump { location: 10648 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Relative(14), source: Relative(23) }, Jump { location: 10594 }, Store { destination_pointer: Relative(15), source: Direct(32841) }, Store { destination_pointer: Relative(16), source: Relative(27) }, Jump { location: 10654 }, Load { destination: Relative(14), source_pointer: Relative(15) }, Load { destination: Relative(15), source_pointer: Relative(16) }, JumpIf { condition: Relative(14), location: 10660 }, Jump { location: 10658 }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Jump { location: 10665 }, BinaryFieldOp { destination: Relative(14), op: Equals, lhs: Relative(21), rhs: Relative(15) }, JumpIf { condition: Relative(14), location: 10665 }, Jump { location: 10663 }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Jump { location: 10665 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Mov { destination: Relative(9), source: Relative(14) }, Jump { location: 2436 }, Load { destination: Relative(23), source_pointer: Relative(25) }, BinaryIntOp { destination: Relative(27), op: LessThan, bit_size: U32, lhs: Relative(14), rhs: Relative(23) }, JumpIf { condition: Relative(27), location: 10672 }, Jump { location: 10695 }, Load { destination: Relative(23), source_pointer: Relative(22) }, Load { destination: Relative(27), source_pointer: Relative(24) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(27), rhs: Direct(2) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(14) }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(14) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryFieldOp { destination: Relative(32), op: Add, lhs: Relative(30), rhs: Relative(31) }, Mov { destination: Direct(32771), source: Relative(27) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(30), source: Direct(32773) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(31), rhs: Relative(14) }, Store { destination_pointer: Relative(33), source: Relative(32) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Store { destination_pointer: Relative(24), source: Relative(30) }, Store { destination_pointer: Relative(25), source: Relative(28) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Jump { location: 10695 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Relative(14), source: Relative(23) }, Jump { location: 10561 }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: LessThan, bit_size: U32, lhs: Relative(1), rhs: Relative(16) }, JumpIf { condition: Relative(21), location: 10702 }, Jump { location: 10725 }, Load { destination: Relative(16), source_pointer: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(17) }, Load { destination: Relative(24), source_pointer: Relative(22) }, Load { destination: Relative(25), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(2) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Load { destination: Relative(26), source_pointer: Relative(28) }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(1) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryFieldOp { destination: Relative(28), op: Add, lhs: Relative(26), rhs: Relative(27) }, Mov { destination: Direct(32771), source: Relative(21) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(26), source: Direct(32773) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Direct(2) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(27), rhs: Relative(1) }, Store { destination_pointer: Relative(29), source: Relative(28) }, Store { destination_pointer: Relative(2), source: Relative(16) }, Store { destination_pointer: Relative(17), source: Relative(26) }, Store { destination_pointer: Relative(22), source: Relative(24) }, Store { destination_pointer: Relative(23), source: Relative(25) }, Jump { location: 10725 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(32842) }, Mov { destination: Relative(1), source: Relative(16) }, Jump { location: 2222 }, JumpIf { condition: Relative(23), location: 10730 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U32, lhs: Relative(21), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(23) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32843) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(28), source_pointer: Relative(30) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(2), rhs: Relative(30) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(26) }, Load { destination: Relative(23), source_pointer: Relative(30) }, Load { destination: Relative(26), source_pointer: Relative(24) }, Not { destination: Relative(29), source: Relative(23), bit_size: U1 }, BinaryIntOp { destination: Relative(23), op: Mul, bit_size: U1, lhs: Relative(29), rhs: Relative(25) }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(23) }, JumpIf { condition: Relative(25), location: 10756 }, Jump { location: 10899 }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(25), source: Direct(32837) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(26), source: Direct(32840) }, Load { destination: Relative(29), source_pointer: Relative(16) }, Const { destination: Relative(30), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(30), rhs: Relative(29) }, Not { destination: Relative(31), source: Relative(31), bit_size: U1 }, JumpIf { condition: Relative(31), location: 10768 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(29), rhs: Direct(2) }, Store { destination_pointer: Relative(16), source: Relative(29) }, Mov { destination: Relative(29), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(31), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(32), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(33), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(34), source: Direct(1) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(35) }, IndirectConst { destination_pointer: Relative(34), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Mov { destination: Relative(36), source: Relative(35) }, Store { destination_pointer: Relative(36), source: Relative(27) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(36), source: Direct(32840) }, Store { destination_pointer: Relative(29), source: Relative(34) }, Store { destination_pointer: Relative(31), source: Relative(16) }, Store { destination_pointer: Relative(32), source: Direct(32842) }, Store { destination_pointer: Relative(33), source: Direct(32837) }, Mov { destination: Relative(23), source: Direct(32838) }, Jump { location: 10795 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Direct(32836) }, JumpIf { condition: Relative(30), location: 10902 }, Jump { location: 10798 }, Load { destination: Relative(30), source_pointer: Relative(29) }, Load { destination: Relative(34), source_pointer: Relative(31) }, Load { destination: Relative(35), source_pointer: Relative(32) }, Load { destination: Relative(36), source_pointer: Relative(34) }, Const { destination: Relative(37), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(38), op: Equals, bit_size: U32, lhs: Relative(37), rhs: Relative(36) }, Not { destination: Relative(38), source: Relative(38), bit_size: U1 }, JumpIf { condition: Relative(38), location: 10807 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, Store { destination_pointer: Relative(34), source: Relative(36) }, Mov { destination: Relative(36), source: Direct(1) }, Const { destination: Relative(38), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(38) }, IndirectConst { destination_pointer: Relative(36), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, Const { destination: Relative(39), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(38), size: Relative(39) }, output: HeapArray { pointer: Relative(40), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(29), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(36) }, Store { destination_pointer: Relative(32), source: Relative(35) }, Store { destination_pointer: Relative(33), source: Direct(32841) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(36), rhs: Direct(32842) }, Load { destination: Relative(29), source_pointer: Relative(30) }, Cast { destination: Relative(31), source: Relative(29), bit_size: Integer(U32) }, Cast { destination: Relative(30), source: Relative(31), bit_size: Field }, Cast { destination: Relative(29), source: Relative(30), bit_size: Integer(U32) }, Mov { destination: Relative(23), source: Direct(32838) }, Jump { location: 10828 }, BinaryIntOp { destination: Relative(30), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(17) }, JumpIf { condition: Relative(30), location: 10831 }, Jump { location: 10888 }, BinaryIntOp { destination: Relative(30), op: Mul, bit_size: U32, lhs: Relative(23), rhs: Relative(23) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(31), op: Equals, bit_size: U32, lhs: Relative(32), rhs: Relative(23) }, JumpIf { condition: Relative(31), location: 10839 }, BinaryIntOp { destination: Relative(34), op: Div, bit_size: U32, lhs: Relative(30), rhs: Relative(23) }, BinaryIntOp { destination: Relative(33), op: Equals, bit_size: U32, lhs: Relative(34), rhs: Relative(23) }, JumpIf { condition: Relative(33), location: 10839 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(30) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(23), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 10843 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(30), op: Div, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(31), op: Add, bit_size: U32, lhs: Relative(29), rhs: Relative(30) }, BinaryIntOp { destination: Relative(32), op: LessThanEquals, bit_size: U32, lhs: Relative(29), rhs: Relative(31) }, JumpIf { condition: Relative(32), location: 10848 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(32), op: Div, bit_size: U32, lhs: Relative(31), rhs: Relative(17) }, BinaryIntOp { destination: Relative(33), op: Mul, bit_size: U32, lhs: Relative(32), rhs: Relative(17) }, BinaryIntOp { destination: Relative(30), op: Sub, bit_size: U32, lhs: Relative(31), rhs: Relative(33) }, BinaryIntOp { destination: Relative(31), op: LessThan, bit_size: U32, lhs: Relative(30), rhs: Relative(17) }, JumpIf { condition: Relative(31), location: 10854 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U32, lhs: Relative(30), rhs: Direct(32844) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(31) }, Load { destination: Relative(30), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32842) }, Const { destination: Relative(35), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(35) }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(34), rhs: Relative(32) }, Load { destination: Relative(33), source_pointer: Relative(35) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32843) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(34), source_pointer: Relative(36) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(32836) }, Const { destination: Relative(36), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(35), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(36) }, BinaryIntOp { destination: Relative(36), op: Add, bit_size: U32, lhs: Relative(35), rhs: Relative(32) }, Load { destination: Relative(31), source_pointer: Relative(36) }, Not { destination: Relative(32), source: Relative(31), bit_size: U1 }, BinaryIntOp { destination: Relative(31), op: Mul, bit_size: U1, lhs: Relative(32), rhs: Relative(30) }, JumpIf { condition: Relative(31), location: 10878 }, Jump { location: 10882 }, BinaryFieldOp { destination: Relative(30), op: Equals, lhs: Relative(33), rhs: Relative(27) }, JumpIf { condition: Relative(30), location: 10885 }, Jump { location: 10881 }, Jump { location: 10882 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Relative(23), source: Relative(30) }, Jump { location: 10828 }, Store { destination_pointer: Relative(25), source: Direct(32841) }, Store { destination_pointer: Relative(26), source: Relative(34) }, Jump { location: 10888 }, Load { destination: Relative(23), source_pointer: Relative(25) }, Load { destination: Relative(25), source_pointer: Relative(26) }, JumpIf { condition: Relative(23), location: 10894 }, Jump { location: 10892 }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Jump { location: 10899 }, BinaryFieldOp { destination: Relative(23), op: Equals, lhs: Relative(28), rhs: Relative(25) }, JumpIf { condition: Relative(23), location: 10899 }, Jump { location: 10897 }, Store { destination_pointer: Relative(24), source: Direct(32837) }, Jump { location: 10899 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Direct(32842) }, Mov { destination: Relative(21), source: Relative(23) }, Jump { location: 2181 }, Load { destination: Relative(30), source_pointer: Relative(32) }, BinaryIntOp { destination: Relative(34), op: LessThan, bit_size: U32, lhs: Relative(23), rhs: Relative(30) }, JumpIf { condition: Relative(34), location: 10906 }, Jump { location: 10929 }, Load { destination: Relative(30), source_pointer: Relative(29) }, Load { destination: Relative(34), source_pointer: Relative(31) }, Load { destination: Relative(35), source_pointer: Relative(32) }, Load { destination: Relative(36), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(34), rhs: Direct(2) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(23) }, Load { destination: Relative(37), source_pointer: Relative(39) }, BinaryIntOp { destination: Relative(39), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(39), rhs: Relative(23) }, Load { destination: Relative(38), source_pointer: Relative(40) }, BinaryFieldOp { destination: Relative(39), op: Add, lhs: Relative(37), rhs: Relative(38) }, Mov { destination: Direct(32771), source: Relative(34) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(37), source: Direct(32773) }, BinaryIntOp { destination: Relative(38), op: Add, bit_size: U32, lhs: Relative(37), rhs: Direct(2) }, BinaryIntOp { destination: Relative(40), op: Add, bit_size: U32, lhs: Relative(38), rhs: Relative(23) }, Store { destination_pointer: Relative(40), source: Relative(39) }, Store { destination_pointer: Relative(29), source: Relative(30) }, Store { destination_pointer: Relative(31), source: Relative(37) }, Store { destination_pointer: Relative(32), source: Relative(35) }, Store { destination_pointer: Relative(33), source: Relative(36) }, Jump { location: 10929 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(32842) }, Mov { destination: Relative(23), source: Relative(30) }, Jump { location: 10795 }, BinaryIntOp { destination: Relative(16), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(23) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 22 }, Mov { destination: Relative(22), source: Direct(0) }, Mov { destination: Relative(23), source: Relative(7) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(6) }, Mov { destination: Relative(26), source: Relative(17) }, Mov { destination: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, Const { destination: Relative(21), bit_size: Integer(U32), value: 22 }, Mov { destination: Relative(22), source: Direct(0) }, Mov { destination: Relative(23), source: Relative(14) }, Mov { destination: Relative(24), source: Relative(15) }, Mov { destination: Relative(25), source: Relative(13) }, Mov { destination: Relative(26), source: Relative(17) }, Mov { destination: Relative(27), source: Relative(16) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(21) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(16) }, Jump { location: 2102 }, BinaryIntOp { destination: Relative(13), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(13) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Load { destination: Relative(21), source_pointer: Relative(14) }, Mov { destination: Relative(22), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Direct(32837) }, Load { destination: Relative(23), source_pointer: Relative(6) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(24), rhs: Relative(23) }, Not { destination: Relative(25), source: Relative(25), bit_size: U1 }, JumpIf { condition: Relative(25), location: 10978 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(23), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(23) }, Mov { destination: Relative(23), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(25), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(26), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(27), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(28), source: Direct(1) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(29) }, IndirectConst { destination_pointer: Relative(28), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Mov { destination: Relative(30), source: Relative(29) }, Store { destination_pointer: Relative(30), source: Relative(16) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(30), source: Direct(32840) }, Store { destination_pointer: Relative(23), source: Relative(28) }, Store { destination_pointer: Relative(25), source: Relative(6) }, Store { destination_pointer: Relative(26), source: Direct(32842) }, Store { destination_pointer: Relative(27), source: Direct(32837) }, Mov { destination: Relative(7), source: Direct(32838) }, Jump { location: 11005 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Direct(32836) }, JumpIf { condition: Relative(24), location: 11117 }, Jump { location: 11008 }, Load { destination: Relative(24), source_pointer: Relative(23) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Load { destination: Relative(30), source_pointer: Relative(28) }, Const { destination: Relative(31), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(32), op: Equals, bit_size: U32, lhs: Relative(31), rhs: Relative(30) }, Not { destination: Relative(32), source: Relative(32), bit_size: U1 }, JumpIf { condition: Relative(32), location: 11017 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(30), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, Store { destination_pointer: Relative(28), source: Relative(30) }, Mov { destination: Relative(30), source: Direct(1) }, Const { destination: Relative(32), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(32) }, IndirectConst { destination_pointer: Relative(30), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, Const { destination: Relative(33), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(32), size: Relative(33) }, output: HeapArray { pointer: Relative(34), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(23), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(30) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Store { destination_pointer: Relative(27), source: Direct(32841) }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(30), rhs: Direct(32842) }, Load { destination: Relative(23), source_pointer: Relative(24) }, Cast { destination: Relative(25), source: Relative(23), bit_size: Integer(U32) }, Cast { destination: Relative(24), source: Relative(25), bit_size: Field }, Cast { destination: Relative(23), source: Relative(24), bit_size: Integer(U32) }, Mov { destination: Relative(7), source: Direct(32838) }, Jump { location: 11038 }, BinaryIntOp { destination: Relative(24), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(24), location: 11041 }, Jump { location: 11092 }, BinaryIntOp { destination: Relative(24), op: Mul, bit_size: U32, lhs: Relative(7), rhs: Relative(7) }, Const { destination: Relative(26), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(25), op: Equals, bit_size: U32, lhs: Relative(26), rhs: Relative(7) }, JumpIf { condition: Relative(25), location: 11049 }, BinaryIntOp { destination: Relative(28), op: Div, bit_size: U32, lhs: Relative(24), rhs: Relative(7) }, BinaryIntOp { destination: Relative(27), op: Equals, bit_size: U32, lhs: Relative(28), rhs: Relative(7) }, JumpIf { condition: Relative(27), location: 11049 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(25) }, JumpIf { condition: Relative(26), location: 11053 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(24), op: Div, bit_size: U32, lhs: Relative(25), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(23), rhs: Relative(24) }, BinaryIntOp { destination: Relative(26), op: LessThanEquals, bit_size: U32, lhs: Relative(23), rhs: Relative(25) }, JumpIf { condition: Relative(26), location: 11058 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(26), op: Div, bit_size: U32, lhs: Relative(25), rhs: Relative(13) }, BinaryIntOp { destination: Relative(27), op: Mul, bit_size: U32, lhs: Relative(26), rhs: Relative(13) }, BinaryIntOp { destination: Relative(24), op: Sub, bit_size: U32, lhs: Relative(25), rhs: Relative(27) }, BinaryIntOp { destination: Relative(25), op: LessThan, bit_size: U32, lhs: Relative(24), rhs: Relative(13) }, JumpIf { condition: Relative(25), location: 11064 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U32, lhs: Relative(24), rhs: Direct(32844) }, Const { destination: Relative(27), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(27) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(25) }, Load { destination: Relative(24), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32842) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(27), source_pointer: Relative(29) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Direct(32836) }, Const { destination: Relative(29), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(28), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(29) }, BinaryIntOp { destination: Relative(29), op: Add, bit_size: U32, lhs: Relative(28), rhs: Relative(26) }, Load { destination: Relative(25), source_pointer: Relative(29) }, Not { destination: Relative(26), source: Relative(25), bit_size: U1 }, BinaryIntOp { destination: Relative(25), op: Mul, bit_size: U1, lhs: Relative(26), rhs: Relative(24) }, JumpIf { condition: Relative(25), location: 11083 }, Jump { location: 11087 }, BinaryFieldOp { destination: Relative(24), op: Equals, lhs: Relative(27), rhs: Relative(16) }, JumpIf { condition: Relative(24), location: 11090 }, Jump { location: 11086 }, Jump { location: 11087 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(24) }, Jump { location: 11038 }, Store { destination_pointer: Relative(22), source: Direct(32841) }, Jump { location: 11092 }, Load { destination: Relative(7), source_pointer: Relative(22) }, JumpIf { condition: Relative(7), location: 11114 }, Const { destination: Relative(13), bit_size: Integer(U32), value: 38 }, Mov { destination: Relative(21), source: Direct(1) }, Const { destination: Relative(22), bit_size: Integer(U32), value: 38 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(22) }, Mov { destination: Relative(22), source: Relative(21) }, IndirectConst { destination_pointer: Relative(22), bit_size: Integer(U64), value: 9862881900111276825 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Const { destination: Relative(24), bit_size: Integer(U32), value: 35 }, Mov { destination: Direct(32771), source: Relative(23) }, Mov { destination: Direct(32772), source: Relative(22) }, Mov { destination: Direct(32773), source: Relative(24) }, Call { location: 23 }, Const { destination: Relative(23), bit_size: Integer(U32), value: 35 }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(23) }, Store { destination_pointer: Relative(22), source: Direct(32842) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(21), size: Relative(13) } }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 2008 }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(28), op: LessThan, bit_size: U32, lhs: Relative(7), rhs: Relative(24) }, JumpIf { condition: Relative(28), location: 11121 }, Jump { location: 11144 }, Load { destination: Relative(24), source_pointer: Relative(23) }, Load { destination: Relative(28), source_pointer: Relative(25) }, Load { destination: Relative(29), source_pointer: Relative(26) }, Load { destination: Relative(30), source_pointer: Relative(27) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(28), rhs: Direct(2) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(7) }, Load { destination: Relative(31), source_pointer: Relative(33) }, BinaryIntOp { destination: Relative(33), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(33), rhs: Relative(7) }, Load { destination: Relative(32), source_pointer: Relative(34) }, BinaryFieldOp { destination: Relative(33), op: Add, lhs: Relative(31), rhs: Relative(32) }, Mov { destination: Direct(32771), source: Relative(28) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(31), source: Direct(32773) }, BinaryIntOp { destination: Relative(32), op: Add, bit_size: U32, lhs: Relative(31), rhs: Direct(2) }, BinaryIntOp { destination: Relative(34), op: Add, bit_size: U32, lhs: Relative(32), rhs: Relative(7) }, Store { destination_pointer: Relative(34), source: Relative(33) }, Store { destination_pointer: Relative(23), source: Relative(24) }, Store { destination_pointer: Relative(25), source: Relative(31) }, Store { destination_pointer: Relative(26), source: Relative(29) }, Store { destination_pointer: Relative(27), source: Relative(30) }, Jump { location: 11144 }, BinaryIntOp { destination: Relative(24), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(32842) }, Mov { destination: Relative(7), source: Relative(24) }, Jump { location: 11005 }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(2), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(8), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(1), rhs: Direct(2) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Load { destination: Relative(6), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(7) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(20), op: Equals, bit_size: U32, lhs: Relative(17), rhs: Relative(16) }, Not { destination: Relative(20), source: Relative(20), bit_size: U1 }, JumpIf { condition: Relative(20), location: 11161 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(16) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Const { destination: Relative(20), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(21), op: Equals, bit_size: U32, lhs: Relative(20), rhs: Relative(16) }, Not { destination: Relative(21), source: Relative(21), bit_size: U1 }, JumpIf { condition: Relative(21), location: 11169 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, Store { destination_pointer: Relative(22), source: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(22), rhs: Direct(2) }, ForeignCall { function: \"print\", destinations: [], destination_value_types: [], inputs: [MemoryAddress(Direct(32841)), HeapArray(HeapArray { pointer: Relative(16), size: 17 }), MemoryAddress(Direct(32842)), MemoryAddress(Relative(8)), MemoryAddress(Relative(6)), HeapArray(HeapArray { pointer: Relative(21), size: 95 }), MemoryAddress(Direct(32841))], input_value_types: [Simple(Integer(U1)), Array { value_types: [Simple(Integer(U8))], size: 17 }, Simple(Integer(U32)), Simple(Field), Simple(Field), Array { value_types: [Simple(Integer(U8))], size: 95 }, Simple(Integer(U1))] }, Const { destination: Relative(16), bit_size: Integer(U32), value: 23 }, Mov { destination: Relative(23), source: Direct(0) }, Mov { destination: Relative(24), source: Relative(9) }, Mov { destination: Relative(25), source: Relative(14) }, Mov { destination: Relative(26), source: Relative(15) }, Mov { destination: Relative(27), source: Relative(8) }, Mov { destination: Relative(28), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(16) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(6) }, Jump { location: 1802 }, Load { destination: Relative(14), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 11191 }, Jump { location: 11214 }, Load { destination: Relative(14), source_pointer: Relative(20) }, Load { destination: Relative(15), source_pointer: Relative(21) }, Load { destination: Relative(16), source_pointer: Relative(22) }, Load { destination: Relative(19), source_pointer: Relative(23) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(2) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Add, lhs: Relative(24), rhs: Relative(25) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(20), source: Relative(14) }, Store { destination_pointer: Relative(21), source: Relative(24) }, Store { destination_pointer: Relative(22), source: Relative(16) }, Store { destination_pointer: Relative(23), source: Relative(19) }, Jump { location: 11214 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 1291 }, Load { destination: Relative(14), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(15), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(14) }, JumpIf { condition: Relative(15), location: 11221 }, Jump { location: 11244 }, Load { destination: Relative(14), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, Load { destination: Relative(16), source_pointer: Relative(21) }, Load { destination: Relative(23), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Load { destination: Relative(24), source_pointer: Relative(26) }, BinaryIntOp { destination: Relative(26), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(26), rhs: Relative(2) }, Load { destination: Relative(25), source_pointer: Relative(27) }, BinaryFieldOp { destination: Relative(26), op: Add, lhs: Relative(24), rhs: Relative(25) }, Mov { destination: Direct(32771), source: Relative(15) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(24), source: Direct(32773) }, BinaryIntOp { destination: Relative(25), op: Add, bit_size: U32, lhs: Relative(24), rhs: Direct(2) }, BinaryIntOp { destination: Relative(27), op: Add, bit_size: U32, lhs: Relative(25), rhs: Relative(2) }, Store { destination_pointer: Relative(27), source: Relative(26) }, Store { destination_pointer: Relative(19), source: Relative(14) }, Store { destination_pointer: Relative(20), source: Relative(24) }, Store { destination_pointer: Relative(21), source: Relative(16) }, Store { destination_pointer: Relative(22), source: Relative(23) }, Jump { location: 11244 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(14) }, Jump { location: 1023 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 14 }, Mov { destination: Relative(14), source: Direct(0) }, Mov { destination: Relative(15), source: Relative(8) }, Mov { destination: Relative(16), source: Relative(9) }, Mov { destination: Relative(17), source: Relative(13) }, Mov { destination: Relative(18), source: Relative(4) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(7) }, Jump { location: 851 }, Load { destination: Relative(8), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11264 }, Jump { location: 11287 }, Load { destination: Relative(8), source_pointer: Relative(14) }, Load { destination: Relative(9), source_pointer: Relative(15) }, Load { destination: Relative(13), source_pointer: Relative(16) }, Load { destination: Relative(18), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryFieldOp { destination: Relative(21), op: Add, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(14), source: Relative(8) }, Store { destination_pointer: Relative(15), source: Relative(19) }, Store { destination_pointer: Relative(16), source: Relative(13) }, Store { destination_pointer: Relative(17), source: Relative(18) }, Jump { location: 11287 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(8) }, Jump { location: 701 }, Load { destination: Relative(4), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(4) }, JumpIf { condition: Relative(13), location: 11294 }, Jump { location: 11317 }, Load { destination: Relative(4), source_pointer: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(14) }, Load { destination: Relative(17), source_pointer: Relative(15) }, Load { destination: Relative(18), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Load { destination: Relative(19), source_pointer: Relative(21) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(20), source_pointer: Relative(22) }, BinaryFieldOp { destination: Relative(21), op: Add, lhs: Relative(19), rhs: Relative(20) }, Mov { destination: Direct(32771), source: Relative(13) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(19), source: Direct(32773) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(19), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(20), rhs: Relative(2) }, Store { destination_pointer: Relative(22), source: Relative(21) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Store { destination_pointer: Relative(15), source: Relative(17) }, Store { destination_pointer: Relative(16), source: Relative(18) }, Jump { location: 11317 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(4) }, Jump { location: 484 }, Load { destination: Relative(10), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(12), op: LessThan, bit_size: U32, lhs: Relative(2), rhs: Relative(10) }, JumpIf { condition: Relative(12), location: 11324 }, Jump { location: 11347 }, Load { destination: Relative(10), source_pointer: Relative(17) }, Load { destination: Relative(12), source_pointer: Relative(18) }, Load { destination: Relative(13), source_pointer: Relative(19) }, Load { destination: Relative(15), source_pointer: Relative(20) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(2) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Load { destination: Relative(16), source_pointer: Relative(22) }, BinaryIntOp { destination: Relative(22), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(22), rhs: Relative(2) }, Load { destination: Relative(21), source_pointer: Relative(23) }, BinaryFieldOp { destination: Relative(22), op: Add, lhs: Relative(16), rhs: Relative(21) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(16), source: Direct(32773) }, BinaryIntOp { destination: Relative(21), op: Add, bit_size: U32, lhs: Relative(16), rhs: Direct(2) }, BinaryIntOp { destination: Relative(23), op: Add, bit_size: U32, lhs: Relative(21), rhs: Relative(2) }, Store { destination_pointer: Relative(23), source: Relative(22) }, Store { destination_pointer: Relative(17), source: Relative(10) }, Store { destination_pointer: Relative(18), source: Relative(16) }, Store { destination_pointer: Relative(19), source: Relative(13) }, Store { destination_pointer: Relative(20), source: Relative(15) }, Jump { location: 11347 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(2), rhs: Direct(32842) }, Mov { destination: Relative(2), source: Relative(10) }, Jump { location: 196 }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 11355 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12049594436772143978 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 11350 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 12053 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 11375 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32869) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11415 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 11580 }, Jump { location: 11418 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 11427 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(16), size: Relative(17) }, output: HeapArray { pointer: Relative(18), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Cast { destination: Relative(9), source: Relative(7), bit_size: Integer(U32) }, Cast { destination: Relative(8), source: Relative(9), bit_size: Field }, Cast { destination: Relative(7), source: Relative(8), bit_size: Integer(U32) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 11454 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11458 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11461 }, Jump { location: 11579 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 11469 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 11479 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 11479 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11483 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11488 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 11494 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 11521 }, Jump { location: 11516 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 11519 }, Jump { location: 11533 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Jump { location: 11533 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 11527 }, Call { location: 11616 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 11533 }, Load { destination: Relative(12), source_pointer: Relative(10) }, JumpIf { condition: Relative(12), location: 11539 }, Jump { location: 11536 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(9) }, Jump { location: 11458 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 11545 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 11625 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Jump { location: 11579 }, Return, Load { destination: Relative(7), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 11584 }, Jump { location: 11607 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryFieldOp { destination: Relative(17), op: Add, lhs: Relative(15), rhs: Relative(16) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Store { destination_pointer: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(15) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, Jump { location: 11607 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(7) }, Jump { location: 11415 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 4105629585450304037 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 7233212735005103307 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 5019202896831570965 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14225679739041873922 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 12632160011611521689 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Load { destination: Direct(32773), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32774), op: Equals, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, JumpIf { condition: Direct(32774), location: 11629 }, Jump { location: 11631 }, Mov { destination: Direct(32772), source: Direct(32771) }, Jump { location: 11650 }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32776) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, Const { destination: Direct(32776), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32775), rhs: Direct(32776) }, Mov { destination: Direct(32772), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32775) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32775) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 11648 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 11641 }, IndirectConst { destination_pointer: Direct(32772), bit_size: Integer(U32), value: 1 }, Jump { location: 11650 }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 8082322909743101849 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 11665340019033496436 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 13674703438729013973 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 1359149291226868540 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 6665645948190457319 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 14241324264716156348 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16986922238178214607 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 15583592523844085222 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, BinaryIntOp { destination: Direct(32775), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32775), source_pointer: Direct(32775) }, BinaryIntOp { destination: Direct(32776), op: Sub, bit_size: U32, lhs: Direct(32775), rhs: Direct(32772) }, Load { destination: Direct(32777), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32778), op: Equals, bit_size: U32, lhs: Direct(32777), rhs: Direct(2) }, Const { destination: Direct(32780), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32780) }, JumpIf { condition: Direct(32778), location: 11687 }, Jump { location: 11691 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Jump { location: 11713 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32781) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32780) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(2) }, Store { destination_pointer: Direct(32780), source: Direct(32776) }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Mov { destination: Direct(32783), source: Direct(32779) }, Mov { destination: Direct(32784), source: Direct(32780) }, BinaryIntOp { destination: Direct(32785), op: Equals, bit_size: U32, lhs: Direct(32783), rhs: Direct(32782) }, JumpIf { condition: Direct(32785), location: 11712 }, Load { destination: Direct(32781), source_pointer: Direct(32783) }, Store { destination_pointer: Direct(32784), source: Direct(32781) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, Jump { location: 11705 }, Jump { location: 11713 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(32776) }, Return, Load { destination: Direct(32774), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32775), op: Equals, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, JumpIf { condition: Direct(32775), location: 11719 }, Jump { location: 11721 }, Mov { destination: Direct(32773), source: Direct(32771) }, Jump { location: 11736 }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32777), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(32772) }, Mov { destination: Direct(32778), source: Direct(32771) }, Mov { destination: Direct(32779), source: Direct(32773) }, BinaryIntOp { destination: Direct(32780), op: Equals, bit_size: U32, lhs: Direct(32778), rhs: Direct(32777) }, JumpIf { condition: Direct(32780), location: 11733 }, Load { destination: Direct(32776), source_pointer: Direct(32778) }, Store { destination_pointer: Direct(32779), source: Direct(32776) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Jump { location: 11726 }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32774), op: Sub, bit_size: U32, lhs: Direct(32774), rhs: Direct(2) }, Jump { location: 11736 }, Return, Load { destination: Direct(32775), source_pointer: Direct(32771) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32771), rhs: Direct(2) }, Load { destination: Direct(32776), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, Load { destination: Direct(32777), source_pointer: Direct(32779) }, BinaryIntOp { destination: Direct(32778), op: Add, bit_size: U32, lhs: Direct(32779), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32779), op: Add, bit_size: U32, lhs: Direct(32776), rhs: Direct(32772) }, BinaryIntOp { destination: Direct(32780), op: LessThanEquals, bit_size: U32, lhs: Direct(32779), rhs: Direct(32777) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32775), rhs: Direct(2) }, JumpIf { condition: Direct(32780), location: 11748 }, Jump { location: 11765 }, JumpIf { condition: Direct(32781), location: 11750 }, Jump { location: 11754 }, Mov { destination: Direct(32773), source: Direct(32771) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, Jump { location: 11764 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32777), rhs: Direct(32783) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32782) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32779) }, BinaryIntOp { destination: Direct(32782), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(2) }, Store { destination_pointer: Direct(32782), source: Direct(32777) }, Jump { location: 11764 }, Jump { location: 11777 }, Const { destination: Direct(32783), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(32782), op: Mul, bit_size: U32, lhs: Direct(32779), rhs: Direct(32783) }, Const { destination: Direct(32784), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32782), rhs: Direct(32784) }, Mov { destination: Direct(32773), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(32783) }, IndirectConst { destination_pointer: Direct(32773), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32779) }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32783), rhs: Direct(2) }, Store { destination_pointer: Direct(32783), source: Direct(32782) }, Jump { location: 11777 }, Const { destination: Direct(32781), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Direct(32780), op: Add, bit_size: U32, lhs: Direct(32773), rhs: Direct(32781) }, BinaryIntOp { destination: Direct(32781), op: Equals, bit_size: U32, lhs: Direct(32771), rhs: Direct(32773) }, JumpIf { condition: Direct(32781), location: 11791 }, BinaryIntOp { destination: Direct(32783), op: Add, bit_size: U32, lhs: Direct(32778), rhs: Direct(32776) }, Mov { destination: Direct(32784), source: Direct(32778) }, Mov { destination: Direct(32785), source: Direct(32780) }, BinaryIntOp { destination: Direct(32786), op: Equals, bit_size: U32, lhs: Direct(32784), rhs: Direct(32783) }, JumpIf { condition: Direct(32786), location: 11791 }, Load { destination: Direct(32782), source_pointer: Direct(32784) }, Store { destination_pointer: Direct(32785), source: Direct(32782) }, BinaryIntOp { destination: Direct(32784), op: Add, bit_size: U32, lhs: Direct(32784), rhs: Direct(2) }, BinaryIntOp { destination: Direct(32785), op: Add, bit_size: U32, lhs: Direct(32785), rhs: Direct(2) }, Jump { location: 11784 }, BinaryIntOp { destination: Direct(32774), op: Add, bit_size: U32, lhs: Direct(32780), rhs: Direct(32776) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 16291778408346427203 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 3078107792722303059 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 10951819287827820458 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 11350 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 8 }, Mov { destination: Relative(8), source: Direct(0) }, Mov { destination: Relative(9), source: Relative(1) }, Mov { destination: Relative(10), source: Relative(2) }, Mov { destination: Relative(11), source: Relative(3) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(7) }, Call { location: 12500 }, Mov { destination: Direct(0), source: Relative(0) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 11818 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(8) }, Mov { destination: Relative(7), source: Direct(1) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(8) }, IndirectConst { destination_pointer: Relative(7), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Mov { destination: Relative(10), source: Relative(8) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32840) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32869) }, Mov { destination: Relative(8), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(12), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Mov { destination: Relative(13), source: Direct(1) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(13), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Mov { destination: Relative(15), source: Relative(14) }, Store { destination_pointer: Relative(15), source: Relative(4) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(15), source: Direct(32840) }, Store { destination_pointer: Relative(8), source: Relative(13) }, Store { destination_pointer: Relative(10), source: Relative(7) }, Store { destination_pointer: Relative(11), source: Direct(32842) }, Store { destination_pointer: Relative(12), source: Direct(32837) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11858 }, BinaryIntOp { destination: Relative(7), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Direct(32836) }, JumpIf { condition: Relative(7), location: 12023 }, Jump { location: 11861 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(14) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 11870 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(14) }, Mov { destination: Relative(14), source: Direct(1) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 5 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(16) }, IndirectConst { destination_pointer: Relative(14), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 4 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, BlackBox(Poseidon2Permutation { message: HeapVector { pointer: Relative(16), size: Relative(17) }, output: HeapArray { pointer: Relative(18), size: 4 }, len: Direct(32844) }), Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Load { destination: Relative(7), source_pointer: Relative(8) }, Cast { destination: Relative(9), source: Relative(7), bit_size: Integer(U32) }, Cast { destination: Relative(8), source: Relative(9), bit_size: Field }, Cast { destination: Relative(7), source: Relative(8), bit_size: Integer(U32) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(9) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 11897 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(10) }, Mov { destination: Relative(6), source: Direct(32838) }, Jump { location: 11901 }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(8) }, JumpIf { condition: Relative(9), location: 11904 }, Jump { location: 12022 }, Load { destination: Relative(9), source_pointer: Relative(1) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Load { destination: Relative(11), source_pointer: Relative(10) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 11912 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(6), rhs: Relative(6) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(6) }, JumpIf { condition: Relative(13), location: 11922 }, BinaryIntOp { destination: Relative(16), op: Div, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, JumpIf { condition: Relative(15), location: 11922 }, Call { location: 11613 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(6), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(6), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11926 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(11), op: Div, bit_size: U32, lhs: Relative(13), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(14), op: LessThanEquals, bit_size: U32, lhs: Relative(7), rhs: Relative(13) }, JumpIf { condition: Relative(14), location: 11931 }, Call { location: 11616 }, BinaryIntOp { destination: Relative(14), op: Div, bit_size: U32, lhs: Relative(13), rhs: Relative(9) }, BinaryIntOp { destination: Relative(15), op: Mul, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, BinaryIntOp { destination: Relative(13), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, JumpIf { condition: Relative(13), location: 11937 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(9), op: Mul, bit_size: U32, lhs: Relative(11), rhs: Direct(32844) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(14), rhs: Relative(9) }, Load { destination: Relative(13), source_pointer: Relative(15) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32842) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(16) }, Load { destination: Relative(17), source_pointer: Relative(19) }, Mov { destination: Relative(10), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Not { destination: Relative(16), source: Relative(13), bit_size: U1 }, BinaryIntOp { destination: Relative(13), op: Or, bit_size: U1, lhs: Relative(17), rhs: Relative(16) }, JumpIf { condition: Relative(13), location: 11964 }, Jump { location: 11959 }, BinaryFieldOp { destination: Relative(12), op: Equals, lhs: Relative(15), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 11962 }, Jump { location: 11976 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Jump { location: 11976 }, Store { destination_pointer: Relative(10), source: Direct(32841) }, Load { destination: Relative(12), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(15), op: LessThanEquals, bit_size: U32, lhs: Relative(12), rhs: Relative(13) }, JumpIf { condition: Relative(15), location: 11970 }, Call { location: 11616 }, Load { destination: Relative(12), source_pointer: Relative(1) }, Load { destination: Relative(15), source_pointer: Relative(2) }, Store { destination_pointer: Relative(1), source: Relative(12) }, Store { destination_pointer: Relative(2), source: Relative(15) }, Store { destination_pointer: Relative(3), source: Relative(13) }, Jump { location: 11976 }, Load { destination: Relative(12), source_pointer: Relative(10) }, JumpIf { condition: Relative(12), location: 11982 }, Jump { location: 11979 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(9) }, Jump { location: 11901 }, Load { destination: Relative(6), source_pointer: Relative(1) }, Load { destination: Relative(7), source_pointer: Relative(2) }, Load { destination: Relative(8), source_pointer: Relative(3) }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(11), rhs: Relative(6) }, JumpIf { condition: Relative(10), location: 11988 }, Call { location: 11619 }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(10), source: Direct(32772) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(12) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(9) }, Store { destination_pointer: Relative(12), source: Direct(32841) }, Mov { destination: Direct(32771), source: Relative(10) }, Call { location: 11625 }, Mov { destination: Relative(7), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, Store { destination_pointer: Relative(11), source: Relative(4) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(7) }, Call { location: 11625 }, Mov { destination: Relative(9), source: Direct(32772) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(11) }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, Store { destination_pointer: Relative(11), source: Relative(5) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Direct(32771), source: Relative(9) }, Call { location: 11625 }, Mov { destination: Relative(4), source: Direct(32772) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(5) }, Store { destination_pointer: Relative(10), source: Direct(32837) }, Store { destination_pointer: Relative(1), source: Relative(6) }, Store { destination_pointer: Relative(2), source: Relative(4) }, Store { destination_pointer: Relative(3), source: Relative(8) }, Jump { location: 12022 }, Return, Load { destination: Relative(7), source_pointer: Relative(11) }, BinaryIntOp { destination: Relative(9), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(7) }, JumpIf { condition: Relative(9), location: 12027 }, Jump { location: 12050 }, Load { destination: Relative(7), source_pointer: Relative(8) }, Load { destination: Relative(9), source_pointer: Relative(10) }, Load { destination: Relative(13), source_pointer: Relative(11) }, Load { destination: Relative(14), source_pointer: Relative(12) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Load { destination: Relative(15), source_pointer: Relative(17) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(6) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryFieldOp { destination: Relative(17), op: Add, lhs: Relative(15), rhs: Relative(16) }, Mov { destination: Direct(32771), source: Relative(9) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 5 }, Call { location: 11715 }, Mov { destination: Relative(15), source: Direct(32773) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(16), rhs: Relative(6) }, Store { destination_pointer: Relative(18), source: Relative(17) }, Store { destination_pointer: Relative(8), source: Relative(7) }, Store { destination_pointer: Relative(10), source: Relative(15) }, Store { destination_pointer: Relative(11), source: Relative(13) }, Store { destination_pointer: Relative(12), source: Relative(14) }, Jump { location: 12050 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(32842) }, Mov { destination: Relative(6), source: Relative(7) }, Jump { location: 11858 }, Call { location: 11350 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 12062 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 12068 }, Call { location: 11616 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 12075 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 12499 }, Jump { location: 12081 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 12089 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 12096 }, Call { location: 11613 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12116 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 12471 }, Jump { location: 12119 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12139 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 12165 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12169 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 12420 }, Jump { location: 12172 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12180 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32848) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32846) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 12357 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 12383 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12385 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 12395 }, Jump { location: 12388 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 12499 }, JumpIf { condition: Relative(10), location: 12397 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11359 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 12385 }, JumpIf { condition: Relative(11), location: 12422 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 12446 }, Jump { location: 12468 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 12454 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 12468 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 12169 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 12479 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11737 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 12116 }, Return, Call { location: 11350 }, Load { destination: Relative(4), source_pointer: Relative(2) }, Load { destination: Relative(5), source_pointer: Relative(3) }, Load { destination: Relative(6), source_pointer: Relative(4) }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(8), op: Equals, bit_size: U32, lhs: Relative(7), rhs: Relative(6) }, Not { destination: Relative(8), source: Relative(8), bit_size: U1 }, JumpIf { condition: Relative(8), location: 12509 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(6), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(6) }, BinaryIntOp { destination: Relative(6), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(32842) }, BinaryIntOp { destination: Relative(8), op: LessThanEquals, bit_size: U32, lhs: Relative(5), rhs: Relative(6) }, JumpIf { condition: Relative(8), location: 12515 }, Call { location: 11616 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(8), source_pointer: Relative(4) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(10), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(8) }, Not { destination: Relative(10), source: Relative(10), bit_size: U1 }, JumpIf { condition: Relative(10), location: 12522 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(8), op: Add, bit_size: U32, lhs: Relative(8), rhs: Direct(2) }, Store { destination_pointer: Relative(4), source: Relative(8) }, BinaryIntOp { destination: Relative(4), op: Div, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(6), rhs: Relative(4) }, JumpIf { condition: Relative(5), location: 12946 }, Jump { location: 12528 }, Load { destination: Relative(5), source_pointer: Relative(1) }, Load { destination: Relative(6), source_pointer: Relative(2) }, Load { destination: Relative(7), source_pointer: Relative(6) }, Const { destination: Relative(8), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(9), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(7) }, Not { destination: Relative(9), source: Relative(9), bit_size: U1 }, JumpIf { condition: Relative(9), location: 12536 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(7), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Relative(7) }, BinaryIntOp { destination: Relative(6), op: Mul, bit_size: U32, lhs: Relative(5), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(9), op: Div, bit_size: U32, lhs: Relative(6), rhs: Direct(32843) }, BinaryIntOp { destination: Relative(7), op: Equals, bit_size: U32, lhs: Relative(9), rhs: Relative(5) }, JumpIf { condition: Relative(7), location: 12543 }, Call { location: 11613 }, Const { destination: Relative(7), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(10), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(7), rhs: Relative(10) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(9) }, IndirectConst { destination_pointer: Relative(5), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, BinaryIntOp { destination: Relative(9), op: Add, bit_size: U32, lhs: Relative(9), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(7) }, Const { destination: Relative(9), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(7), op: Add, bit_size: U32, lhs: Relative(5), rhs: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Direct(32838) }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(5) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12563 }, BinaryIntOp { destination: Relative(5), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(6) }, JumpIf { condition: Relative(5), location: 12918 }, Jump { location: 12566 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(6), source_pointer: Relative(9) }, Mov { destination: Relative(7), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(7), source: Relative(5) }, Mov { destination: Relative(5), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(5), source: Relative(6) }, Mov { destination: Relative(6), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(6), source: Direct(32838) }, Load { destination: Relative(8), source_pointer: Relative(1) }, Load { destination: Relative(9), source_pointer: Relative(2) }, Load { destination: Relative(10), source_pointer: Relative(3) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12586 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(15) }, Mov { destination: Relative(11), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(14) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(13) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Relative(14) }, Mov { destination: Relative(13), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32838) }, Mov { destination: Relative(14), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Relative(11) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(15), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(16), op: Equals, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Not { destination: Relative(16), source: Relative(16), bit_size: U1 }, JumpIf { condition: Relative(16), location: 12612 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12616 }, BinaryIntOp { destination: Relative(11), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(11), location: 12867 }, Jump { location: 12619 }, Load { destination: Relative(8), source_pointer: Relative(13) }, Load { destination: Relative(9), source_pointer: Relative(14) }, Load { destination: Relative(11), source_pointer: Relative(9) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(12), rhs: Relative(11) }, Not { destination: Relative(13), source: Relative(13), bit_size: U1 }, JumpIf { condition: Relative(13), location: 12627 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(11) }, Mov { destination: Relative(11), source: Direct(1) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 83 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(13) }, IndirectConst { destination_pointer: Relative(11), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Relative(14), source: Relative(13) }, Store { destination_pointer: Relative(14), source: Direct(32848) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32852) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32856) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32850) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32866) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32854) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32859) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32846) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32851) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32865) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32855) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32861) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32845) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32867) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32864) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32862) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32857) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32863) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32849) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32858) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32853) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32860) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32868) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(14), rhs: Direct(2) }, Store { destination_pointer: Relative(14), source: Direct(32847) }, Load { destination: Relative(13), source_pointer: Relative(9) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(15), op: Equals, bit_size: U32, lhs: Relative(14), rhs: Relative(13) }, Not { destination: Relative(15), source: Relative(15), bit_size: U1 }, JumpIf { condition: Relative(15), location: 12804 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Equals, bit_size: U32, lhs: Relative(8), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 12830 }, Const { destination: Relative(15), bit_size: Integer(U32), value: 86 }, Mov { destination: Relative(16), source: Direct(1) }, Const { destination: Relative(17), bit_size: Integer(U32), value: 86 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(17) }, Mov { destination: Relative(17), source: Relative(16) }, IndirectConst { destination_pointer: Relative(17), bit_size: Integer(U64), value: 9576462532509309328 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 82 }, Mov { destination: Direct(32771), source: Relative(18) }, Mov { destination: Direct(32772), source: Relative(17) }, Mov { destination: Direct(32773), source: Relative(19) }, Call { location: 23 }, Const { destination: Relative(18), bit_size: Integer(U32), value: 82 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(18) }, Store { destination_pointer: Relative(17), source: Direct(32843) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(10) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Store { destination_pointer: Relative(17), source: Relative(8) }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(17), rhs: Direct(2) }, Trap { revert_data: HeapVector { pointer: Relative(16), size: Relative(15) } }, Mov { destination: Relative(4), source: Direct(32838) }, Jump { location: 12832 }, BinaryIntOp { destination: Relative(10), op: LessThan, bit_size: U32, lhs: Relative(4), rhs: Relative(8) }, JumpIf { condition: Relative(10), location: 12842 }, Jump { location: 12835 }, Load { destination: Relative(4), source_pointer: Relative(7) }, Load { destination: Relative(7), source_pointer: Relative(5) }, Load { destination: Relative(5), source_pointer: Relative(6) }, Store { destination_pointer: Relative(1), source: Relative(4) }, Store { destination_pointer: Relative(2), source: Relative(7) }, Store { destination_pointer: Relative(3), source: Relative(5) }, Jump { location: 12946 }, JumpIf { condition: Relative(10), location: 12844 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(10), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32843) }, Const { destination: Relative(13), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(13) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(12), rhs: Relative(10) }, Load { destination: Relative(11), source_pointer: Relative(13) }, BinaryIntOp { destination: Relative(12), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(32842) }, Const { destination: Relative(14), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(14) }, BinaryIntOp { destination: Relative(14), op: Add, bit_size: U32, lhs: Relative(13), rhs: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(14) }, Const { destination: Relative(12), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(7) }, Mov { destination: Relative(15), source: Relative(5) }, Mov { destination: Relative(16), source: Relative(6) }, Mov { destination: Relative(17), source: Relative(11) }, Mov { destination: Relative(18), source: Relative(10) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(12) }, Call { location: 11802 }, Mov { destination: Direct(0), source: Relative(0) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(10) }, Jump { location: 12832 }, JumpIf { condition: Relative(11), location: 12869 }, Call { location: 11619 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U32, lhs: Relative(4), rhs: Direct(32844) }, Const { destination: Relative(16), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(16) }, BinaryIntOp { destination: Relative(16), op: Add, bit_size: U32, lhs: Relative(15), rhs: Relative(11) }, Load { destination: Relative(12), source_pointer: Relative(16) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32842) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(17), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(18) }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(17), rhs: Relative(15) }, Load { destination: Relative(16), source_pointer: Relative(18) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32843) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(17), source_pointer: Relative(19) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(32836) }, Const { destination: Relative(19), bit_size: Integer(U32), value: 3 }, BinaryIntOp { destination: Relative(18), op: Add, bit_size: U32, lhs: Relative(9), rhs: Relative(19) }, BinaryIntOp { destination: Relative(19), op: Add, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Load { destination: Relative(11), source_pointer: Relative(19) }, Not { destination: Relative(15), source: Relative(11), bit_size: U1 }, BinaryIntOp { destination: Relative(11), op: Mul, bit_size: U1, lhs: Relative(15), rhs: Relative(12) }, JumpIf { condition: Relative(11), location: 12893 }, Jump { location: 12915 }, Load { destination: Relative(11), source_pointer: Relative(13) }, Load { destination: Relative(12), source_pointer: Relative(14) }, Load { destination: Relative(15), source_pointer: Relative(12) }, Const { destination: Relative(18), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(19), op: Equals, bit_size: U32, lhs: Relative(18), rhs: Relative(15) }, Not { destination: Relative(19), source: Relative(19), bit_size: U1 }, JumpIf { condition: Relative(19), location: 12901 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(15), rhs: Direct(2) }, Store { destination_pointer: Relative(12), source: Relative(15) }, BinaryIntOp { destination: Relative(15), op: Add, bit_size: U32, lhs: Relative(11), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(12) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 2 }, Call { location: 11737 }, Mov { destination: Relative(19), source: Direct(32773) }, Mov { destination: Relative(20), source: Direct(32774) }, Store { destination_pointer: Relative(20), source: Relative(16) }, BinaryIntOp { destination: Relative(20), op: Add, bit_size: U32, lhs: Relative(20), rhs: Direct(2) }, Store { destination_pointer: Relative(20), source: Relative(17) }, Store { destination_pointer: Relative(13), source: Relative(15) }, Store { destination_pointer: Relative(14), source: Relative(19) }, Jump { location: 12915 }, BinaryIntOp { destination: Relative(11), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(11) }, Jump { location: 12616 }, Load { destination: Relative(5), source_pointer: Relative(7) }, Load { destination: Relative(8), source_pointer: Relative(9) }, Load { destination: Relative(10), source_pointer: Relative(8) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, Not { destination: Relative(12), source: Relative(12), bit_size: U1 }, JumpIf { condition: Relative(12), location: 12926 }, Call { location: 11356 }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(10), rhs: Direct(2) }, Store { destination_pointer: Relative(8), source: Relative(10) }, BinaryIntOp { destination: Relative(10), op: Add, bit_size: U32, lhs: Relative(5), rhs: Direct(2) }, Mov { destination: Direct(32771), source: Relative(8) }, Const { destination: Direct(32772), bit_size: Integer(U32), value: 4 }, Call { location: 11737 }, Mov { destination: Relative(12), source: Direct(32773) }, Mov { destination: Relative(13), source: Direct(32774) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32840) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32839) }, BinaryIntOp { destination: Relative(13), op: Add, bit_size: U32, lhs: Relative(13), rhs: Direct(2) }, Store { destination_pointer: Relative(13), source: Direct(32837) }, Store { destination_pointer: Relative(7), source: Relative(10) }, Store { destination_pointer: Relative(9), source: Relative(12) }, BinaryIntOp { destination: Relative(5), op: Add, bit_size: U32, lhs: Relative(4), rhs: Direct(32842) }, Mov { destination: Relative(4), source: Relative(5) }, Jump { location: 12563 }, Return]" ], - "debug_symbols": "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", + "debug_symbols": "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", "file_map": { "3": { "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n", @@ -244,7 +244,7 @@ expression: artifact "path": "std/cmp.nr" }, "9": { - "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash, Hasher};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n H: Hasher,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n H: Hasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n H: Hasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n H: Hasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n H: Hasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", + "source": "use crate::cmp::Eq;\nuse crate::default::Default;\nuse crate::hash::{BuildHasher, Hash};\nuse crate::option::Option;\n\n// An unconstrained hash table with open addressing and quadratic probing.\n// Note that \"unconstrained\" here means that almost all operations on this\n// map are unconstrained and importantly are not constrained afterward either.\n// This map is meant to be used in unconstrained or comptime code where this\n// is not an issue.\n//\n// Compared to the constrained HashMap type, UHashMap can grow automatically\n// as needed and is more efficient since it can break out of loops early.\npub struct UHashMap {\n _table: [Slot],\n\n // Amount of valid elements in the map.\n _len: u32,\n\n _build_hasher: B,\n}\n\n// Data unit in the UHashMap table.\n// In case Noir adds support for enums in the future, this\n// should be refactored to have three states:\n// 1. (key, value)\n// 2. (empty)\n// 3. (deleted)\nstruct Slot {\n _key_value: Option<(K, V)>,\n _is_deleted: bool,\n}\n\nimpl Default for Slot {\n fn default() -> Self {\n Slot { _key_value: Option::none(), _is_deleted: false }\n }\n}\n\nimpl Slot {\n fn is_valid(self) -> bool {\n !self._is_deleted & self._key_value.is_some()\n }\n\n fn is_available(self) -> bool {\n self._is_deleted | self._key_value.is_none()\n }\n\n fn key_value(self) -> Option<(K, V)> {\n self._key_value\n }\n\n fn key_value_unchecked(self) -> (K, V) {\n self._key_value.unwrap_unchecked()\n }\n\n fn set(&mut self, key: K, value: V) {\n self._key_value = Option::some((key, value));\n self._is_deleted = false;\n }\n\n // Shall not override `_key_value` with Option::none(),\n // because we must be able to differentiate empty\n // and deleted slots for lookup.\n fn mark_deleted(&mut self) {\n self._is_deleted = true;\n }\n}\n\n// While conducting lookup, we iterate attempt from 0 to N - 1 due to heuristic,\n// that if we have went that far without finding desired,\n// it is very unlikely to be after - performance will be heavily degraded.\nimpl UHashMap {\n // Creates a new instance of UHashMap with specified BuildHasher.\n // docs:start:with_hasher\n pub fn with_hasher(_build_hasher: B) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let _table = &[Slot::default()];\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n pub fn with_hasher_and_capacity(_build_hasher: B, capacity: u32) -> Self\n where\n B: BuildHasher,\n {\n // docs:end:with_hasher\n let mut _table = &[];\n for _ in 0..capacity {\n _table = _table.push_back(Slot::default());\n }\n let _len = 0;\n Self { _table, _len, _build_hasher }\n }\n\n // Clears the map, removing all key-value entries.\n // docs:start:clear\n pub fn clear(&mut self) {\n // docs:end:clear\n self._table = &[Slot::default()];\n self._len = 0;\n }\n\n // Returns true if the map contains a value for the specified key.\n // docs:start:contains_key\n pub fn contains_key(self, key: K) -> bool\n where\n K: Hash + Eq,\n B: BuildHasher,\n {\n // docs:end:contains_key\n // Safety: unconstrained context\n unsafe { self.get(key) }.is_some()\n }\n\n // Returns true if the map contains no elements.\n // docs:start:is_empty\n pub fn is_empty(self) -> bool {\n // docs:end:is_empty\n self._len == 0\n }\n\n // Returns a BoundedVec of all valid entries in this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:entries\n pub fn entries(self) -> [(K, V)] {\n // docs:end:entries\n let mut entries = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n // SAFETY: slot.is_valid() should ensure there is a valid key-value pairing here\n let key_value = slot.key_value().unwrap_unchecked();\n entries = entries.push_back(key_value);\n }\n }\n\n let self_len = self._len;\n let entries_len = entries.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {entries_len}.\";\n assert(entries.len() == self._len, msg);\n\n entries\n }\n\n // Returns a BoundedVec containing all the keys within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:keys\n pub fn keys(self) -> [K] {\n // docs:end:keys\n let mut keys = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (key, _) = slot.key_value_unchecked();\n keys = keys.push_back(key);\n }\n }\n\n let self_len = self._len;\n let keys_len = keys.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {keys_len}.\";\n assert(keys.len() == self._len, msg);\n\n keys\n }\n\n // Returns a BoundedVec containing all the values within this UHashMap.\n // The length of the returned vector will always match the length of this UHashMap.\n // docs:start:values\n pub fn values(self) -> [V] {\n // docs:end:values\n let mut values = &[];\n\n for slot in self._table {\n if slot.is_valid() {\n let (_, value) = slot.key_value_unchecked();\n values = values.push_back(value);\n }\n }\n\n let self_len = self._len;\n let values_len = values.len();\n let msg =\n f\"Amount of valid elements should have been {self_len} times, but got {values_len}.\";\n assert(values.len() == self._len, msg);\n\n values\n }\n\n // For each key-value entry applies mutator function.\n // docs:start:iter_mut\n pub unconstrained fn iter_mut(&mut self, f: fn(K, V) -> (K, V))\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = f(entry.0, entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each key applies mutator function.\n // docs:start:iter_keys_mut\n pub unconstrained fn iter_keys_mut(&mut self, f: fn(K) -> K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:iter_keys_mut\n let mut entries = self.entries();\n let mut new_map = UHashMap::with_hasher(self._build_hasher);\n\n for entry in entries {\n let (key, value) = (f(entry.0), entry.1);\n new_map.insert(key, value);\n }\n\n self._table = new_map._table;\n }\n\n // For each value applies mutator function.\n // docs:start:iter_values_mut\n pub fn iter_values_mut(&mut self, f: fn(V) -> V) {\n // docs:end:iter_values_mut\n for i in 0..self._table.len() {\n let mut slot = self._table[i];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n slot.set(key, f(value));\n self._table[i] = slot;\n }\n }\n }\n\n // Retains only the elements specified by the predicate.\n // docs:start:retain\n pub fn retain(&mut self, f: fn(K, V) -> bool) {\n // docs:end:retain\n for index in 0..self._table.len() {\n let mut slot = self._table[index];\n if slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n if !f(key, value) {\n slot.mark_deleted();\n self._len -= 1;\n self._table[index] = slot;\n }\n }\n }\n }\n\n // Amount of active key-value entries.\n // docs:start:len\n pub fn len(self) -> u32 {\n // docs:end:len\n self._len\n }\n\n // Get the current capacity of the inner table.\n // docs:start:capacity\n pub fn capacity(self: Self) -> u32 {\n // docs:end:capacity\n self._table.len()\n }\n\n // Get the value by key. If it does not exist, returns none().\n // docs:start:get\n pub unconstrained fn get(self, key: K) -> Option\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:get\n let mut result = Option::none();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, value) = slot.key_value_unchecked();\n if current_key == key {\n result = Option::some(value);\n break;\n }\n }\n }\n\n result\n }\n\n // Insert key-value entry. In case key was already present, value is overridden.\n // docs:start:insert\n pub unconstrained fn insert(&mut self, key: K, value: V)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:insert\n self.try_resize();\n\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n let mut insert = false;\n\n // Either marked as deleted or has unset key-value.\n if slot.is_available() {\n insert = true;\n self._len += 1;\n } else {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n insert = true;\n }\n }\n\n if insert {\n slot.set(key, value);\n self._table[index] = slot;\n break;\n }\n }\n }\n\n unconstrained fn try_resize(&mut self)\n where\n B: BuildHasher,\n K: Eq + Hash,\n {\n if self.len() + 1 >= self.capacity() / 2 {\n let capacity = self.capacity() * 2;\n let mut new_map = UHashMap::with_hasher_and_capacity(self._build_hasher, capacity);\n\n for entry in self.entries() {\n new_map.insert(entry.0, entry.1);\n }\n *self = new_map;\n }\n }\n\n // Removes a key-value entry. If key is not present, UHashMap remains unchanged.\n // docs:start:remove\n pub unconstrained fn remove(&mut self, key: K)\n where\n K: Eq + Hash,\n B: BuildHasher,\n {\n // docs:end:remove\n let hash = self.hash(key);\n\n for attempt in 0..self._table.len() {\n let index = self.quadratic_probe(hash, attempt as u32);\n let mut slot = self._table[index];\n\n // Not marked as deleted and has key-value.\n if slot.is_valid() {\n let (current_key, _) = slot.key_value_unchecked();\n if current_key == key {\n slot.mark_deleted();\n self._table[index] = slot;\n self._len -= 1;\n break;\n }\n }\n }\n }\n\n // Apply UHashMap's hasher onto key to obtain pre-hash for probing.\n fn hash(self, key: K) -> u32\n where\n K: Hash,\n B: BuildHasher,\n {\n let mut hasher = self._build_hasher.build_hasher();\n key.hash(&mut hasher);\n hasher.finish() as u32\n }\n\n // Probing scheme: quadratic function.\n // We use 0.5 constant near variadic attempt and attempt^2 monomials.\n // This ensures good uniformity of distribution for table sizes\n // equal to prime numbers or powers of two.\n fn quadratic_probe(self: Self, hash: u32, attempt: u32) -> u32 {\n (hash + (attempt + attempt * attempt) / 2) % self._table.len()\n }\n}\n\n// Equality class on UHashMap has to test that they have\n// equal sets of key-value entries,\n// thus one is a subset of the other and vice versa.\n// docs:start:eq\nimpl Eq for UHashMap\nwhere\n K: Eq + Hash,\n V: Eq,\n B: BuildHasher,\n{\n fn eq(self, other: UHashMap) -> bool {\n // docs:end:eq\n let mut equal = false;\n\n if self.len() == other.len() {\n equal = true;\n for slot in self._table {\n // Not marked as deleted and has key-value.\n if equal & slot.is_valid() {\n let (key, value) = slot.key_value_unchecked();\n // Safety: unconstrained context\n let other_value = unsafe { other.get(key) };\n\n if other_value.is_none() {\n equal = false;\n } else {\n let other_value = other_value.unwrap_unchecked();\n if value != other_value {\n equal = false;\n }\n }\n }\n }\n }\n\n equal\n }\n}\n\n// docs:start:default\nimpl Default for UHashMap\nwhere\n B: BuildHasher + Default,\n{\n fn default() -> Self {\n // docs:end:default\n UHashMap::with_hasher(B::default())\n }\n}\n", "path": "std/collections/umap.nr" }, "17": { diff --git a/tooling/nargo_fmt/src/formatter/generics.rs b/tooling/nargo_fmt/src/formatter/generics.rs index 12e923fd739..beb1c609e4f 100644 --- a/tooling/nargo_fmt/src/formatter/generics.rs +++ b/tooling/nargo_fmt/src/formatter/generics.rs @@ -39,17 +39,7 @@ impl Formatter<'_> { if !trait_bounds.is_empty() { self.write_token(Token::Colon); self.write_space(); - - let len = trait_bounds.len(); - for (index, trait_bound) in trait_bounds.into_iter().enumerate() { - self.format_trait_bound(trait_bound); - - if index < len - 1 { - self.write_space(); - self.write_token(Token::Plus); - self.write_space(); - } - } + self.format_trait_bounds(trait_bounds); } } UnresolvedGeneric::Numeric { ident, typ } => { diff --git a/tooling/nargo_fmt/src/formatter/traits.rs b/tooling/nargo_fmt/src/formatter/traits.rs index f0d9822e023..d1dc29deda0 100644 --- a/tooling/nargo_fmt/src/formatter/traits.rs +++ b/tooling/nargo_fmt/src/formatter/traits.rs @@ -30,15 +30,7 @@ impl Formatter<'_> { } self.write_space(); - - for (index, trait_bound) in noir_trait.bounds.into_iter().enumerate() { - if index > 0 { - self.write_space(); - self.write_token(Token::Plus); - self.write_space(); - } - self.format_trait_bound(trait_bound); - } + self.format_trait_bounds(noir_trait.bounds); } if !noir_trait.where_clause.is_empty() { @@ -131,11 +123,16 @@ impl Formatter<'_> { self.write_indentation(); self.format_chunk_group(chunks); } - TraitItem::Type { name } => { + TraitItem::Type { name, bounds } => { self.write_indentation(); self.write_keyword(Keyword::Type); self.write_space(); self.write_identifier(name); + if !bounds.is_empty() { + self.write_token(Token::Colon); + self.write_space(); + self.format_trait_bounds(bounds); + } self.write_semicolon(); } } @@ -207,6 +204,22 @@ mod tests { assert_format(src, expected); } + #[test] + fn format_trait_with_type_and_bounds() { + let src = " mod moo { trait Foo { + /// hello + type X : A + B ; + } }"; + let expected = "mod moo { + trait Foo { + /// hello + type X: A + B; + } +} +"; + assert_format(src, expected); + } + #[test] fn format_trait_with_constant_no_value() { let src = " mod moo { trait Foo { diff --git a/tooling/nargo_fmt/src/formatter/where_clause.rs b/tooling/nargo_fmt/src/formatter/where_clause.rs index c5ecb178bbb..4f03e55cd44 100644 --- a/tooling/nargo_fmt/src/formatter/where_clause.rs +++ b/tooling/nargo_fmt/src/formatter/where_clause.rs @@ -68,6 +68,17 @@ impl Formatter<'_> { } } + pub(super) fn format_trait_bounds(&mut self, trait_bounds: Vec) { + for (index, trait_bound) in trait_bounds.into_iter().enumerate() { + if index > 0 { + self.write_space(); + self.write_token(Token::Plus); + self.write_space(); + } + self.format_trait_bound(trait_bound); + } + } + pub(super) fn format_trait_bound(&mut self, trait_bound: TraitBound) { self.format_path(trait_bound.trait_path); self.format_generic_type_args(trait_bound.trait_generics);